特定のライブラリパスをpython2にのみ追加したい。 export PYTHONPATH="/path/to/lib/"
を.bashrc
に追加した後、python3を実行すると次のエラーが表示されます。PYTHONPATHがPython 2.xのサイトパッケージdir Python 3.x!
Python2とpython3が共通のPYTHONPATH
変数を共有しているためだと思います。
それで、python2とpython3にそれぞれ異なるPYTHONPATH
変数を設定できますか。そうでない場合、Pythonの特定のバージョンのみにライブラリパスを追加するにはどうすればよいですか?
mymodule.pth
(Windowsの場合)またはlib/site-packages
(UnixおよびMacintoshの場合)の下に構成ファイルlib/pythonX.Y/site-packages
を作成し、pythonに追加するディレクトリを含む1行を追加できます。 _パス。
docs.python2 および docs.python から:
パス構成ファイルは、名前が
name.pth
の形式を持ち、上記の4つのディレクトリのいずれかに存在するファイルです。その内容は、sys.path
に追加される追加項目(1行に1つ)です。存在しないアイテムはsys.path
に追加されることはなく、アイテムがファイルではなくディレクトリを参照するかどうかのチェックは行われません。sys.path
に複数回追加されるアイテムはありません。空行と#で始まる行はスキップされます。import
で始まる行(スペースまたはタブが続く)が実行されます。
PYTHONPATH
は、パッケージ管理に関する限り、ややハッキングです。 「きれいな」解決策は、packageライブラリとinstall 。
これは実際よりもトリッキーに聞こえるかもしれませんので、どのように機能するかを説明します。
「パッケージ」にwow.py
という名前のファイルが1つあり、それを/home/user/mylib/wow.py
に保存するとします。
次の内容のファイル/home/user/mylib/setup.py
を作成します。
from setuptools import setup
setup(name="WowPackage",
packages=["."],
)
これで、パッケージをPythonディストリビューションに適切にインストール]して、PYTHONPATH
について気にする必要なしに選択できます。「適切なインストール」に関する限り、少なくとも3つのオプションがあります。
「本当に適切」。コードをpython site-packagesディレクトリにコピーします:
$ python setup.py install
"開発"。 python site-packagesから/home/user/mylib
へのリンクのみを追加します。これは、ディレクトリ内のコードの変更が有効になることを意味します。
$ python setup.py develop
"ユーザー"。システムディレクトリに書き込みたくない場合は、パッケージを(「適切に」または「開発モードで」)/home/user/.local
ディレクトリにインストールできます。ここで、Pythonもそのためには、--user
をコマンドに追加するだけです。
$ python setup.py install --user
$ python setup.py develop --user
開発モードでインストールされたパッケージを削除するには、次のようにします
$ python setup.py develop -u
または
$ python setup.py develop -u --user
「適切に」インストールされたパッケージを削除するには、次のようにします。
$ pip uninstall WowPackage
パッケージが単一のファイルよりも興味深い場合(たとえば、サブディレクトリなどがある場合)、packages
関数のsetup
パラメータにそれらをリストするだけです(すべてを再帰的にリストする必要があるため、大きなライブラリにはヘルパー関数を使用します)。それを理解したら、 より詳細なマニュアル も読んでください。
最後に、パッケージをPyPIに投稿します。これは、python setup.py sdist register upload
を呼び出すのと同じくらい簡単です(ただし、PyPIユーザー名が必要です)。
python2
専用またはpython3
専用のPYTHONPATH
を変更する方法がないことがわかりました。 .pth
ファイル 。を使用する必要がありました
私がしなければならなかったことは:
$HOME/.local/lib/python${MAJOR_VERSION}.${MINOR_VERSION}/site-packages
.pth
ファイルを作成します.pth
ファイルが機能することをテストします`.pthの詳細については。ファイルの構文とその仕組みについては、 python2 docs および python3 docs をご覧ください。
(.pth
ファイルの概要:pythonインタープリターが起動すると、特定のディレクトリを検索し、.pth
ファイルを表示し、それらのファイルを開き、ファイルを解析します。これらのディレクトリをsys.path
(つまりPYTHONPATH
と同じ動作)に追加し、それらのディレクトリにあるpythonモジュールを通常のインポートに使用できるようにします。)
lib/site-packages
のドキュメントの移動/追加に煩わされたくない場合は、実行したいpython2.7スクリプトに2行のコードを追加してみてください(以下)。
import sys
sys.path = [p for p in sys.path if p.startswith(r'C:\Python27')]
この方法では、コードを実行するたびにPYTHONPATHが更新されます(すべてのpython3.xパッケージを無視します)。