scipy
の作業を行うために、Continuum.ioのPython Anacondaディストリビューションで作業を開始しています。
Anacondaを起動して実行することはできましたが、Anacondaが新しいPYTHONPATH
環境変数を作成するかどうか作成する新しい環境ごとにか、それとも共通システムPYTHONPATH
に依存しています。
ドキュメントでこれに関する情報を見つけることができませんでした。
さらに、printenv
を実行したときに、新しく作成された環境にPYTHONPATH
変数が表示されませんでしたが、いくつかの新しいanaconda作成の環境変数が見つかりました。
私が見つけることができる最良の方法は、AnacondaがいくつかのAnacondaディレクトリと新しい環境ディレクトリをPATH
変数の先頭に追加したことですが、これは必ずしも新しいパッケージをシステム環境から分離するわけではありませんが、近いです。
誰もがこの質問への答えを知っているか、この懸念に対処する方法を見つけましたか?
いいえ、Anaconda環境で変更する必要があるのはPATHだけです(そのため、環境bin/
ディレクトリ、またはScripts\
から正しいPython Windowsで)。
Anaconda環境が機能する方法は、環境にインストールされるすべてのものをハードリンクすることです。すべての意図と目的において、これは、各環境がPythonとすべてのパッケージの完全に別個のインストールであることを意味します。ハードリンクを使用することにより、これは効率的に行われます。 PYTHONPATHは、環境内のPythonバイナリが既に環境内のサイトパッケージ、環境のlibなどを検索しているためです。
AnacondaはPYTHONPATH
を使用しません。ただし、PYTHONPATH
が設定されている場合、anaconda環境にないライブラリのロードに使用できることに注意してください。そのため、環境をアクティブ化する前に、
unset PYTHONPATH
たとえば、このPYTHONPATHは間違ったpandas lib:
export PYTHONPATH=/home/john/share/usr/anaconda/lib/python
source activate anaconda-2.7
python
>>>> import pandas as pd
/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.Egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.Egg/pandas/__init__.py", line 6, in <module>
from . import hashtable, tslib, lib
ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.Egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8
PYTHONPATH
の設定を解除すると、間違ったpandas libがロードされなくなります:
unset PYTHONPATH
source activate anaconda-2.7
python
>>>> import pandas as pd
>>>>