为什么 python 的版本在从终端和 Atom 调用时不同

Why python's versions differ when called from Terminal and from Atom

当我从终端 运行 Python 和 Atom 调用不同版本的 python 。因此,有些包我可以毫无问题地从终端调用,但我不能从 Atom 调用。以下是详细信息:

terminal 调用 python 时,我得到版本 3.7.1

$ python
Python 3.7.1 | packaged by conda-forge | (default, Nov 13 2018, 09:50:42) 
[Clang 9.0.0 (clang-900.0.37)] :: Anaconda custom (64-bit) on darwin

(如果我输入 python3,我得到的结果完全一样)

现在,当查看 Atompython 版本时,我得到的是

版本 3.6.5
>>> import sys
>>> print(sys.version
3.6.5 | packaged by conda-forge | (default, Apr  6 2018, 13:44:09) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]

怎么来的?如何让 Atom 获得与终端获得的版本相同的版本?

尝试失败

使用命令 import sys 查看 PATH 然后 print(sys.path) 我得到的是:

来自原子:

['', '/anaconda3/lib/python36.zip', '/anaconda3/lib/python3.6', 
'/anaconda3/lib/python3.6/lib-dynload', '/anaconda3/lib/python3.6/site-packages',
'/anaconda3/lib/python3.6/site-packages/aeosa', '/anaconda3/lib/python3.6/site-packages/cycler-0.10.0-py3.6.egg', 
'/anaconda3/lib/python3.6/site-packages/IPython/extensions', '/Users/mymac/.ipython']

从终端:

['', '/Users/mymac/anaconda3/lib/python37.zip', 
'/Users/mymac/anaconda3/lib/python3.7', 
'/Users/mymac/anaconda3/lib/python3.7/lib-dynload', 
'/Users/mymac/anaconda3/lib/python3.7/site-packages', 
'/Users/mymac/anaconda3/lib/python3.7/site-packages/aeosa']

似乎 Atom 正在使用 pyenv 的 Python 版本,给出以下命令和输出:

$ pyenv versions
* system (set by /Users/mymac/.pyenv/version)
  3.6.5

根据github page of pyenv。我输入了pyenv virtualenv 3.7.1。然后当输入 $ pyenv versions 时,至少版本 3.7.1 在列表中:

* system (set by /Users/mymac/.pyenv/version)
  3.6.5
  3.7.1

但这并没有解决 Atom

的问题

然后我访问了 conda page aboute 管理环境和 运行 以下命令:

$ conda create --name myenv

它运行没有问题,但问题仍然存在

然后我尝试 运行 更具体 $ conda create -n myenv python=3.7.1 但得到:CondaValueError: prefix already exists: /Users/mymac/anaconda3/envs/myenv

正如@jmh 所指出的 然后我尝试:$ source activate 3.7.1 并得到以下提示:(3.7.1) user:~ user$

我可以成功地选择正确的 virtualenv。但是打开 Atom 问题仍然存在

您的计算机上必须有多个(不同版本的)Python 解释器。在 Atom 中打开命令面板并选择 "Python: Select Interpreter"。 Select 您希望使用的 Python 版本。

如果您有多个版本的 python,您应该使用虚拟环境。从终端使用的 python 版本将取决于您激活的虚拟环境。 Atom 将使用相同的方式。 激活你想要的 python 版本,然后 运行 Atom。

如果您使用的是 Anaconda,请安装 conda 环境。如果您使用 Anaconda,它非常简单。如果您不使用它,则需要一些额外的步骤。

互联网上到处都是创建虚拟环境的说明。

我为 python 2.7 创建了一个名为 py27 的环境。当我激活这个环境时,它会像这样显示在光标行上:

如果你没有看到这个,你的环境还没有被激活。要在 Mac 上激活,请键入 source activate py27。我不认为你需要电脑上的源这个词,但我无法测试它。

好吧,我实际上不得不更改jupyter内核的.json文件中的Path。首先我检查了 jupyter 内核的列表:

$ jupyter kernelspec list
julia-0.6    /Users/mymac/Library/Jupyter/kernels/julia-0.6
julia-1.0    /Users/mymac/Library/Jupyter/kernels/julia-1.0
python3      /Users/mymac/Library/Jupyter/kernels/python3

然后我cd上面的python路径,然后,我在里面找到文件kernel.json并打开它:

{
 "argv": [
  "/path/to/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

在该文件中,然后我通过在终端中键入以下内容时获得的 python 路径更改了行 /path/to/python

$ which python
/Users/mymac/anaconda3/bin/python

重新启动 Atom 终于成功了!

github page of jupyter 的提示也很有帮助!