Ger*_*ges 6 python virtualenv python-3.x anaconda conda
我正在尝试在HPC服务器上创建自己的conda python环境,并且正在发生一些非常奇怪的事情。
问题
创建新的conda环境后,似乎python在该环境中看不见自己,在使用基本环境...因此,我无法使用在新环境中安装的软件包,但可以在基本环境中看到它们。 。
这是我所做的
我按照以下步骤安装我的环境:
$ conda create -n niml pip python=3.6.5
$ source activate niml
(niml) $ conda install -c conda-forge luigi
Run Code Online (Sandbox Code Playgroud)
然后检查安装的软件包:
(niml) $ conda list
Run Code Online (Sandbox Code Playgroud)
这是我得到的非常基本的环境:
# Name Version Build Channel
botocore 1.10.61 py_0 conda-forge
ca-certificates 2018.4.16 0 conda-forge
certifi 2018.4.16 py36_0 conda-forge
docutils 0.14 py36_0 conda-forge
jmespath 0.9.3 py_1 conda-forge
libedit 3.1.20170329 h6b74fdf_2
libffi 3.2.1 hd88cf55_4
libgcc-ng 7.2.0 hdf63c60_3
libstdcxx-ng 7.2.0 hdf63c60_3
lockfile 0.12.2 py_1 conda-forge
luigi 2.7.6 py36_0 conda-forge
ncurses 6.1 hf484d3e_0
openssl 1.0.2o 0 conda-forge
pip 10.0.1 py36_0
pyparsing 2.2.0 py_1 conda-forge
python 3.6.5 hc3d631a_2
python-daemon 2.1.2 py36_0
python-dateutil 2.7.3 py_0 conda-forge
readline 7.0 ha6073c6_4
setuptools 39.2.0 py36_0
six 1.11.0 py36_1 conda-forge
sqlite 3.24.0 h84994c4_0
tk 8.6.7 hc745277_3
tornado 4.5.3 py36_0 conda-forge
wheel 0.31.1 py36_0
xz 5.2.4 h14c3975_4
zlib 1.2.11 ha838bed_2
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行python并导入安装的软件包,luigi但没有发现错误。
(niml) $ python
>>> import luigi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'luigi'
Run Code Online (Sandbox Code Playgroud)
我还尝试导入numpy在基本环境中而不是在新环境中的文件,并且它可以正常工作。
>>> import numpy
Run Code Online (Sandbox Code Playgroud)
以上工作正常,这意味着python认为它正在基本环境中运行。
我自己的环境中的Python正在运行
我检查了正在执行的python,它确实是新环境中的一个niml:
>>> import sys
>>> sys.executable
'~/.conda/envs/niml/bin/python'
Run Code Online (Sandbox Code Playgroud)
也从命令行检查,它是环境中的python可执行文件:
(niml) $ which python
~/.conda/envs/niml/bin/python
Run Code Online (Sandbox Code Playgroud)
我在HPC上运行
我之前已经创建了anaconda环境数百次,但从未遇到过此问题。唯一的区别是我使用的是HPC服务器,因此我必须进行如下操作:
module load python/anaconda3
Run Code Online (Sandbox Code Playgroud)
这是我从通常的工作流程中看到的唯一可能导致此问题的区别...
其他人以前见过这个问题并能够解决吗?
小智 1
我试图解决类似的问题,并通过 virtualenv 而不是使用 conda 环境解决了这个问题。我相信 Anaconda 和你的机器之间存在冲突,因为两者都认为他们正在控制你的新环境,而在 virtualenv 中设置新环境似乎可以修复。
如果有帮助,请了解如何使用 virtualenv 设置环境。如果您还没有新环境,请为您的新环境创建一个位置:
mkdir ~/virtualenvironment
Run Code Online (Sandbox Code Playgroud)
设置您的虚拟环境:
virtualenv ~/virtualenvironment/niml/ --python=python3.6.5
Run Code Online (Sandbox Code Playgroud)
激活您的环境:
source bin/activate
Run Code Online (Sandbox Code Playgroud)
确保您已安装所需的任何软件包:
pip install luigi
Run Code Online (Sandbox Code Playgroud)
检查包在 python 中是否正确导入:
python
import luigi
Run Code Online (Sandbox Code Playgroud)
停用:
source deactivate
Run Code Online (Sandbox Code Playgroud)