我一直在运行带有多个conda环境(内核)的木星笔记本。这是通过安装nb_conda和nb_conda_kernels完成的。
在安装上述两个包并重新启动笔记本服务器之后,我似乎可以访问jupyter笔记本中的两个jupyter环境。但是,我无法确定基础shell是否具有正确的环境。例如,如果我启动两个笔记本服务器--一个用Python2.7启动,另一个用3.6启动--我会得到Python版本的预期答案,而不是执行的shell命令。
Python2.7.13:
import sys
print(sys.version)
#succeed evidence for running py < 3
import commands
commands.getoutput('which python')输出
2.7.13 |Anaconda custom (64-bit)| (default, Dec 20 2016, 23:09:15)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
'/path/python/anaconda3/envs/py36/bin/python'在本例中,我希望which python生成在Python2.7.13环境中活动的python版本。但我知道返回的路径实际上是Python3.6环境中使用的python (参见下面)
Python3.6:
import sys
print(sys.version)
import subprocess
subprocess.check_output(["which","python"])输出:
3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:09:58)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
b'/path/python/anaconda3/envs/py36/bin/python\n'此外,在Python3.6环境中,我遇到了这个失败,这是有意义的,因为commands模块在Python3中被删除了:
# fail (evidence for running py 3.6 env)
import commands
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-9cbf0185e88f> in <module>()
1 # fail (evidence for running py 3.6 env)
----> 2 import commands
ModuleNotFoundError: No module named 'commands'因此,在这两种情况下,which python的输出从我启动木星笔记本的环境中提供了python的版本。这使我相信,虽然Python环境与预期一样,但shell环境与Python环境不一致。为什么这是真的?会不会引起问题?
发布于 2018-02-12 01:16:40
which python只为您提供环境变量PATH中的python路径。但不是现在的python版本。它取决于您启动jupyter笔记本的环境。
例如,您可以在原始终端中运行/path/python/anaconda3/envs/py35/bin/python,同时激活source activate py36。在本例中,您的python版本为3.5,但which python仍将为您提供/path/python/anaconda3/envs/py36/bin/python。或者您可以运行/path/python/anaconda3/envs/py27/bin/python,那么您的python版本为2.7,而which python将再次给出py36。
https://stackoverflow.com/questions/48738246
复制相似问题