このようなディレクトリを持つことができるように、python importsをどのように整理しますか。
project
| \
| __init__.py
|
src
| \
| __init__.py
| classes.py
|
test
\
__init__.py
tests.py
そして/project/test/tests.py内でclasses.pyをインポートできるようになります
Tests.pyに次のようなコードがあります
from .. src.classes import(
scheduler
db
)
そして、のエラーが発生しています
SystemError: Parent module '' not loaded, cannot perform relative import
誰が何をすべきか知っていますか?
Pythonは、起動したスクリプトを含むフォルダーをPYTHONPATHに追加するため、
python test/tests.py
フォルダーtest
のみがパスに追加されます(コマンドを実行しているベースディレクトリは追加されません)。
代わりに、次のようにテストを実行します。
python -m test.tests
これにより、ベースディレクトリがpythonパスに追加され、非相対インポートを介してクラスにアクセスできるようになります。
from src.classes import etc
相対インポートスタイルを本当に使用したい場合は、3つのdirをパッケージディレクトリに追加する必要があります
package
* __init__.py
* project
* src
* test
そして、パッケージディレクトリの上からそれを実行します
python -m package.test.tests
参照: