最初にすべて:私は申し訳ありませんが、相対輸入について多くの質問がありましたが、私は解決策を見つけられませんでした。可能であれば、私は次のディレクトリレイアウトを使用したいと思います:相対輸入のためのPythonパッケージ
myClass/
__init__.py
test/
demo.py
benchmark.py
specs.py
src/
__init__.py
myClass.py
は今私の質問は以下のとおりです。
パッケージ内からテストファイルが正しくmyClass.pyをインポートするにはどうすればよい?
libs/myClassまたはmyClassを含むサブモジュールとしてmyClassを使用すると仮定して、パッケージを外部からどのようにインポートしますか?
これまでのところ、私はこれに対してエレガントな解決策を見つけることができませんでした。私はGuido's Decisionを理解して何から、from ..src import myClass
を行うことが可能であるべきであるが、これはエラーになります。それは、パッケージとしてのMyClassを扱っていないように見えます
ValueError: Attempted relative import in non-package
を。 Reading the docs:
私が私が.pthを使用する必要があり、パッケージのスクリプトは、ある場所を指定する何かが欠けてるようですか?
@Brent Newey、はい、あなたは正しいです、相対的な輸入は、進行中の話題と思われ、かなりの答えを読んだ後、私はまだ私の状況を具体的に説明する衝動を感じた。このqを表示した後、#python IRCチャンネルでかなりの人がフラットなディレクトリ構造を使うことを勧めました: "多くの人が、意味論的な名前空間情報のためにPythonがディレクトリとファイルを使用する方法に抵抗します。 Pythonが望んでいるもの。 " http://jcalderone.livejournal.com/39794.html – eerne
誰かが実際のパッケージへのリンクを提供してもよいでしょうか、模範的なディレクトリレイアウトや、いくつかの規則に従ってください。 (理想的にはgithub上で) – eerne
'__init __。py'は' test'ディレクトリにありますか? 'ValueError:非パッケージでの相対インポートを試みました.'と関連している可能性があります。 – jfs