2016-11-29 23 views
0

は「mglearn」3党モジュールを使用する必要があると私は私の仮想環境のlib /にコピーします:検索パスとPythonの仮想環境

/home/abigail/environments/my_env/lib/python3.5/site-packages/mglearn 

しかし、 ipythonのコマンドラインで、モジュール名を見つけることができません:

In [1]: import mglearn 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-e19748f92cd9> in <module>() 
----> 1 import mglearn 

ImportError: No module named 'mglearn' 

それを見つけるはずです。右?

は、その後、私は私のsys.pathチェック:

In [4]: print(sys.path) 
['', '/usr/bin', '/usr/lib64/python35.zip', '/usr/lib64/python3.5', '/usr/lib64/python3.5/plat-linux', '/usr/lib64/python3.5/lib-dynload', '/usr/lib64/python3.5/site-packages', '/usr/lib/python3.5/site-packages', '/usr/lib/python3.5/site-packages/IPython/extensions', '/home/abigail/.ipython'] 

なぜ「のsys.pathは」唯一のルート/、ではない私の仮想環境から始まるディレクトリが含まれているのですか?そのモジュールをPythonで検索するにはどうしたらいいですか?

編集:

[[email protected] bin]$ ll activate 
activate  activate.csh activate.fish 
[[email protected] bin]$ ./activate 
bash: ./activate: Permission denied 
[[email protected] bin]$ sudo ./activate 
sudo: ./activate: command not found 

奇妙な!何故ですか?

+0

virtualenvはどのように入力しますか? – Blender

+0

どういう意味ですか?私はちょうど仮想環境ディレクトリに入った – user697911

+0

あなたは仮想環境を作成しましたが、実際にどのように使用していますか?あなたは 'を実行しますか? my_env/bin/activate'を実行し、 'python'を実行しますか?他に何か?あなたは実際にあなたの最後のコードスニペットからそれを使用しているようではありません。 – Blender

答えて

1

一般的に、仮想環境では、仮想環境のアクティブ化時にパス変数で正しくプリペンドするためにインポートしようとしているモジュールを取得するためにインストールを行いたいと思うでしょう。このしようと考えてみましょう:あなたはすでに仮想環境がセットアップされているよう

はそれが見えますので、あなたは、UNIX/Linuxのいくつかの形式を使用しているように見えます:

/home/abigail/environments/ $ source my_env/bin/activate 

あなたは、あなたの端末の外観のものが表示されるはずlike:

(my_env) /home/abigail/environments 

これは、アクティブな仮想環境があることを意味します。

次に、必要なモジュールをインストールする必要があります。私はモジュールがピップインストールで利用可能であると仮定しています。

(my_env) /home/abigail/environments $ pip install mglearn 

これですべてのセットアップが完了します。あなたのsysパスをチェックすると、仮想環境pythonのものが前面に表示されるはずです。そして、あなたのインポートエラーは消えるはずです。

何か問題が発生した場合は、手動でディレクトリにドロップしたmglearnのコピーを削除する必要があります。

+0

毎回それを有効にする必要がありますか? – user697911

+0

このモジュールと仮想環境で設定したその他のものを使用する場合は、いつでも起動することをお勧めします。はい。 –

+0

また、完了したら、仮想環境をオフにするには、必ず「非アクティブ化」と入力してください。システムに裂けるのを許可する。 –

0

VirtualEnvはPythonインストールのクローンを作成し、特定のvirtualenvのsite-packagesディレクトリを指すsys.pathへの追加パスを作成します。

あなたのIPythonを起動すると、メインのPythonインストールにインストールされ、作成した追加の仮想環境についてはわかりません。

仮想環境にIPythonをインストールすると、そのvirtualenvのサイトパッケージの場所がわかります。試してみて、実行します。

which ipython

その後、あなたのipythonのスクリプトを見て、あなたがいずれかでそれが始まり表示されます。

#!/usr/bin/python

か:

#!/home/abigail/environments/my_env/bin/python3

最初はグローバルにインストールされたipythonを示し、2番目はipythonで、これは蜂を持っています特定のvirtualenvにインストールされています。

FYI、あなたはPYTHONPATH環境変数をエクスポートすることにより、Pythonインタプリタへのパスを追加することができます。

```export PYTHONPATH=/home/abigail/environments/my_env/lib/python3.5/site-packages``` 

これは、あなたのvirtualenvのでグローバルにインストールさIPythonを使用してみましょうでしょう。しかし、これを行う典型的な方法は、virtualenvにIPythonの2番目のコピーをインストールし、そのコピーを使用することです。 virtualenvのため

```/home/abigail/environments/my_env/bin/ipython``` 

activateシェルコマンドは2つだけ実行します。

  1. をPATHにvirtualenvのPythonインタプリタを追加します。だからpython3と入力すると、/usr/bin/python3の代わりに/home/abigail/environments/my_env/bin/python3が実行されます。 /home/abigail/environments/my_env/bin/python3にあるこのバイナリは、sys.pathに/home/abigail/environments/my_env/lib/python3.5/site-packagesの場所を自動的に含めます。お使いの端末は、あなたがで作業しているvirtualenvのあなたを思い出させるために、プロンプトを持っているので、

  2. は、あなたのPS1環境変数を変更し

それはそれだけだとして(activateシェルスクリプトかどうかを使用するのはあなた次第です非常に単純なヘルパースクリプト、どのような方法で環境を調整することができますヨーヨー)。あなたが唯一のvirtualenvのを使用している場合は、自動的にpython3があなたのvirtualenvのPythonのあなたのvirtualenvの内source activateを実行するのと同じことを実行するだろう代わりに〜/ .bashrcファイル、例えば:

```export PATH=/home/abigail/environments/my_env/bin/:$PATH``` 

に輸出を追加することができます。

関連する問題