当我从终端和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
时问题仍然存在
答案 0 :(得分:2)
您的计算机上必须有多个(不同版本的)Python解释器。在Atom中打开命令面板,然后选择“ Python:选择解释器”。选择您要使用的Python版本。
答案 1 :(得分:1)
如果您有多个python版本,则应该使用虚拟环境。从终端使用的python版本将取决于您激活的虚拟环境。原子将使用相同的。 激活所需的python版本,然后运行Atom。
如果您正在使用Anaconda,则安装conda环境。如果您使用Anaconda,则非常简单。如果您不使用它,则需要一些其他步骤。
互联网上到处都是创建虚拟环境的指示。
我为python 2.7创建了一个名为py27的环境。当我激活此环境时,它会显示在光标线上,如下所示:
如果没有看到此消息,则说明您的环境尚未激活。要在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的提示也有很大帮助!