1

アップデート:

を実行する前に virtualenv が適切に初期化されていなかったことが判明しましたeasy_install。これが修正されると、物事は意図したとおりに機能し始めました。記載されている問題はそもそも存在しなかったため、投稿する解決策はありません。「virtualenv をアクティブ化するとき」の手順が適切に行われなかった (聞かないでください) ため、次の誤動作は錯覚でした。

ケースを閉じました。

元の質問:

私はvirtualenvを持っています。内部はsys.path次のようになります。

[...,
 '/<inside_virtualenv>/lib/python2.6/site-packages/foo-1.2.egg',
 ...
 '/usr/local/lib/python2.6/dist-packages/foo-2.0.egg'
]

import foovirtualenv 内からの場合、予想どおり、foo-1.2 がインポートされます。

私は卵を持っています。そのセットアップファイルには、依存関係にある依存関係として別の卵がリストされていますfoo=1.2

virtualenv をアクティブにして を実行しようとするとpython <my_egg>/setup.py develop、次のエラーが表示されます。

Processing dependencies for <my egg>
Installed distribution foo 2.0 conflicts with requirement foo==1.2

この例外を発生させるステートメントのすぐ内側setuptools/command/easy_install.pyに印刷するようにパッチを適用しました。パスは問題なく、最初にリストされ、 2 番目に遠いリストです。sys.pathtryfoo-1.2foo-2.0

私は何を間違っていますか?easy_install が非 virtualenvfoo-2.0インストールを無視し、 foo-1.2virtualenv 内で受け入れるようにする方法はありますか?

sys.path卵の中から問題のあるエントリを削除しsetup.pyても役に立ちません。sys.pathの正しいバージョンのみが含まれていますが、fooプロセスは同じエラーで失敗します。

4

1 に答える 1

2

直接経験した場合を超えて、これが発生する可能性のある別のケースがありますが、これは簡単に回避できます。

新しいvirtualenvを設定するときは、--no-site-packages競合しない(そして競合しない)ことが確実でない限り、システムPythonインストールからライブラリを含めないようにするために使用します。

于 2012-05-03T20:16:09.253 に答える