2

no-site-packagesvirtualenvで、単一のパッケージのルールを無視するにはどうすればよいですか?

背景:デプロイメントにvirtualenvを使用していますが、を使用しているため、これらにはかなり時間がかかりlxmlます。これをコンパイルするには、新しいvirtualenvを再インストールするたびに最大15分かかります。lxmlグローバルサイトパッケージに何らかの例外を設けて使用することはできますか?新しいvirtualenvにコピーするよりも安全で信頼性の高いオプションはありますか?

4

1 に答える 1

5

簡単な答え:いいえ。ただし、同じ問題を解決するために他のことを行うことができます。

この--no-site-packagesオプション(指定しない限りデフォルトになります--system-site-packages)は、一部のディレクトリをに追加するかどうかを制御しsys.pathます。特定のディレクトリが存在するかどうかに関係なく、そのディレクトリ内の1つのパッケージのみを区別することはできません。

ただし、仮想環境のsite-packagesディレクトリにあるパッケージへのシンボリックリンクを作成できます。私のシステムでは:

ln -s /usr/lib/python2.7/site-packages/lxml ./env/lib/python2.7/site-packages

または、より一般的に(環境ではなくシステムのPythonを使用して):

ln -s $(python -c 'import lxml, os.path; print(os.path.dirname(lxml.__file__)') ./env/lib/python2.7/site-packages

シンボリックリンクをサポートしていないシステムを使用している場合は、コピーも機能するはずですが、システム全体のlxmlが更新されると脆弱になります。

于 2012-12-05T08:56:24.747 に答える