setuptools/easy_install .pth ファイルが PYTHONPATH で適切に配置されないのはなぜですか? また、これらの .pth ファイルが sys.path に押し込まれる前に、それらを適切に再生し、ディレクトリを PYTHONPATH に保持するにはどうすればよいですか?
私の現在の問題は、PyYAML と PyCrypto の両方を要件として、プロジェクト用のパッケージを作成したことです。
install_requires=["PyYAML",
"pycrypto >= 2.3"]
開発に伴い、標準ディレクトリ (/usr/lib64/python2.6/site-packages) に PyYaml を pip でインストールしました。そこに古いバージョンの PyCrypto をインストールした後、/opt/devtools/lib64/python2.6/site-packages にインストールした新しいバージョンが必要であることを発見しました。/usr/lib64 の前に、最初に /opt から読み取るように PYTHONPATH を既に設定しています。そして、それはすべて開発中にうまくいきました。実行すると、/opt から PyCrypto 2.3 を取得し、/usr/lib64/... から PyYaml を取得しました。
しかし、今、virtualenv にインストールしようとしていて、実行するpython setup.py develop
と、setuptools/distribute は /usr/lib64/python2.6/site-packages を easy-install.pth に追加しますが、/opt/devtools は追加しません。 /lib64/python2.6/site-packages. 出力に見られるように、適切なバージョンを見つけています。
Using /home/s3447/projects/wsrs.git/emp_parsing
Searching for pycrypto==2.3
Best match: pycrypto 2.3
Adding pycrypto 2.3 to easy-install.pth file
Using /opt/wsrs-devtools/stow/pycrypto-2.3/lib64/python2.6/site-packages
Searching for PyYAML==3.10
Best match: PyYAML 3.10
Adding PyYAML 3.10 to easy-install.pth file
しかし、/opt/... を easy-install.pth に追加しません。(/usr/lib64... と setup.py を実行したディレクトリのみがパスに追加されます。)
最終的な結果は、setuptools は成功したと考えていますが、コードを実行すると、easy-install.pth は、私が望むものよりもよく知っていると判断し、PYTHONPATH の前に自分自身を挿入し、間違ったバージョンのPyCrypto。
2 つの質問:
setuptools が .pth ファイルに追加するディレクトリについて一貫性がないのはなぜですか? 両方のディレクトリがインストールされるか、どちらのディレクトリもインストールされないことが予想されます。
setuptools が PYTHONPATH を上書きしないようにする方法はありますか? そもそもなぜそれが良いアイデアだと考えられたのでしょうか?