【问题标题】:Cannot import packages installed in new Conda environment无法导入安装在新 Conda 环境中的软件包
【发布时间】:2018-12-29 21:52:02
【问题描述】:

我正在尝试在 HPC 服务器上创建自己的 conda python 环境,但发生了一些非常奇怪的事情。

问题

创建一个新的 conda 环境后,python 似乎在这个环境中看不到自己,并且正在使用 base 环境......因此我无法使用安装在新环境中的包,但我可以看到 base 中的包环境...

这就是我所做的

我的环境安装如下:

$ 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,它没有发现它出错。

(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

我在 HPC 上运行

我之前已经创建了数百次 anaconda 环境,但从未遇到过这个问题。唯一的区别是我使用的是 HPC 服务器,因此我必须做这样的事情:

module load python/anaconda3

这是我从通常的工作流程中看到的唯一可能导致此问题的不同...

其他人以前见过这个问题并且能够解决它吗??

【问题讨论】:

  • 试试conda activate niml 而不是source activate niml
  • 我刚刚注意到"conda install" packges are under /env/conda-meta,但是"pip install" packges are under env/lib/python2.7/site-packages (and whatever sys.path gives). 如果我们可以简单地将/env/conda-meta 附加到路径中,那就太好了,但是在附加操作之后,我就可以了() python 并重新运行 python,再次检查 sys.path,/env/conda-meta 不再存在。希望有人能帮忙

标签: python python-3.x anaconda virtualenv conda


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2018-07-04
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多