web-dev-qa-db-ja.com

新しい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

次に、インストールしたパッケージを確認します。

(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

これが、この問題を引き起こしている可能性のある私の通常のワークフローとの唯一の違いです...

他の誰かがこの問題を以前に見たことがあり、それを解決できましたか?

7
Gerges

私は同様の問題を解決しようとしていて、コンダ環境を使用するのではなく、virtualenvを通じてこれを解決しました。 Anacondaとあなたのマシンの間には、virtualenvに新しい環境をセットアップすることで修正されたように見える新しい環境を制御していると考えるという点で、競合があると思います。

役立つ場合は、virtualenvを使用して環境をセットアップする方法を次に示します。新しい環境の場所がまだない場合は、作成します。

mkdir ~/virtualenvironment

仮想環境をセットアップします。

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

環境をアクティブ化します。

source bin/activate

必要なパッケージをすべてインストールしたことを確認してください:

pip install luigi

パッケージがPythonで適切にインポートされることを確認します。

python
import luigi

非アクティブ化するには:

source deactivate
2
jd2504