无法导入安装在新 Conda 环境中的包

11

我正在尝试在HPC服务器上创建自己的conda Python环境,但出现了一些非常奇怪的问题。

问题

创建一个新的conda环境后,似乎Python没有看到它自己在这个环境中,并使用基本环境...因此我无法使用安装在新环境中的软件包,但我可以看到基本环境中的软件包...

以下是我的操作步骤

我按照以下方式安装我的环境:

$ conda create -n niml pip python=3.6.5
$ source activate niml
(niml) $ conda install -c conda-forge luigi

然后我检查我的已安装软件包:

(niml) $ conda list

这是我得到的,非常基础的环境:

# 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

然后我尝试运行Python并导入我安装的luigi包,但它找不到它,导致出现以下错误。

接着我尝试运行 Python 并导入我安装的 luigi 包,但是程序无法找到它,导致了以下错误。

(niml) $ python

>>> import luigi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'luigi'

我还尝试导入在基础环境中而不是新环境中的numpy,并且它可以正常工作。

>>> import numpy

上述工作正常,这意味着python认为它正在基本环境中运行。

在我的自定义环境中运行Python

我检查了正在执行的Python版本,确实是新环境niml中的版本:

>>> import sys
>>> sys.executable

'~/.conda/envs/niml/bin/python'

还可以通过命令行进行检查,确认它是环境内的python可执行文件:

(niml) $ which python

~/.conda/envs/niml/bin/python

我正在高性能计算机上运行

我以前已经创建了成百上千次anaconda环境,并从未遇到过这个问题。唯一的区别是我正在使用一个HPC服务器,因此我必须做出类似这样的改变:

module load python/anaconda3

这是我平时工作流程中唯一的区别,可能是导致问题出现的原因...

有其他人遇到过这个问题并且解决了吗?


尝试使用 conda activate niml 代替 source activate niml - darthbith
2个回答

1
我曾尝试解决类似问题,通过使用virtualenv而不是conda环境来解决。我认为Anaconda和您的计算机之间存在冲突,因为两者都认为它们正在控制您的新环境,而在virtualenv中设置新环境似乎可以解决这个问题。
如果有帮助的话,下面是如何使用virtualenv设置环境。如果您还没有为新环境创建位置,请先创建一个位置:
mkdir ~/virtualenvironment

设置您的虚拟环境:

virtualenv ~/virtualenvironment/niml/ --python=python3.6.5

激活您的环境:

source bin/activate

请确保您已安装所需的任何软件包:

pip install luigi

检查Python中的软件包是否正确导入:

python
import luigi

要停用:

source deactivate

0

我遇到了同样的问题,但后来我发现我的错误是由于环境变量污染造成的。我正在使用Windows系统。

为了解决这个问题,在运行"conda activate ***"之前,请确保您没有设置/修改以下变量:

  • PYTHONPATH变量;应该删除此变量
  • Windows系统的PATH变量;此变量不应包含任何与Python相关的路径
  • Windows用户的PATH变量;此变量不应包含任何与Python相关的路径

然后,我的导入错误就被修复了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接