これは簡単な質問のように思えるかもしれませんが、私が見ている動作を説明する答えは見つかりませんでした。簡単なREPROケースを提供するのは難しいが、私は基本的に、このようなパッケージ構造を有する:私は1つのa.b.c.
内のファイルを持つプロジェクト(のはこのaux_project
を呼びましょう)とa.b.d
内のファイルを持っている別のものを持っているPythonモジュールパスはどのようにファイルシステムパスに変換されますか?
a.b.c
a.b.utils
を、a.b.utils
など(それをmain_project
と呼ぶ)。私はtests_require
を使用して、最初のプロジェクトでpytestテストの中でa.b.utils
をインポートしようとしています。 a.b
は、何らかの理由でvirtualenvの代わりにaux_project/a/b/__init__.pyc
のソースから供給され、他のパッケージをシャドウします(つまり、a.b
はd
またはutils
ではなく、です)。これはテストコンテキストでのみ発生します。 ipythonでは、すべてのパッケージを正常に読み込むことができ、virtualenvから正しく読み込まれます。
何奇妙なのは(私も、そのディレクトリを必要とする)
のpython == 2.7.9
私は単に は、実際のディレクトリを削除した場合、テストはvirtualenvのからpycsをロードしないことですし、すべてが動作します何が起こっているのですか?
私は、PYTHONPATHが明示的に設定されておらず、ipythonとテストが同じvenv –