为什么从Terminal和Atom调用时python的版本不同

时间:2018-12-17 23:24:43

标签: python python-3.x anaconda version atom-editor

当我从终端和Atom运行Python时,将调用不同版本的python。结果,有些程序包可以在终端上正常调用,但不能从Atom调用。详细信息如下:

python调用terminal时,我得到版本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会得到完全相同的结果)

现在,当从python查看Atom版本时,我得到的版本是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获得与终端所获得版本相同的版本?

尝试失败

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

来自Atom:

['', '/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关于管理环境,并运行了以下命令:

$ 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$

我可以成功选择正确的虚拟环境。但是随后打开Atom时问题仍然存在

3 个答案:

答案 0 :(得分:2)

您的计算机上必须有多个(不同版本的)Python解释器。在Atom中打开命令面板,然后选择“ Python:选择解释器”。选择您要使用的Python版本。

答案 1 :(得分:1)

如果您有多个python版本,则应该使用虚拟环境。从终端使用的python版本将取决于您激活的虚拟环境。原子将使用相同的。 激活所需的python版本,然后运行Atom。

如果您正在使用Anaconda,则安装conda环境。如果您使用Anaconda,则非常简单。如果您不使用它,则需要一些其他步骤。

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

我为python 2.7创建了一个名为py27的环境。当我激活此环境时,它会显示在光标线上,如下所示:

enter image description here

如果没有看到此消息,则说明您的环境尚未激活。要在Mac上激活,请输入source activate py27。我认为您在PC上不需要单词source,但是我无法对其进行测试。

答案 2 :(得分:0)

好吧,我实际上必须更改jupyter内核的Path文件中的.json。首先,我检查了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的提示也有很大帮助!