やあみんな-私はPythonの相対的なインポートで髪を引っ張っています。私はドキュメントを30回読みましたが、ここSOや他のフォーラムに多数の投稿がありますが、まだ機能していないようです。
私のディレクトリ構造は現在このようになっています
src/
__init__.py
main.py
components/
__init__.py
expander.py
language_id.py
utilities/
__init__.py
functions.py
Expander.pyとlanguage_id.pyに汎用モジュールへのアクセス権を持たせたい。 python main.pyを実行します。これは、components.expander import *およびcomponents.language_idimport *からモジュールに問題なくアクセスします。
ただし、汎用モジュールにアクセスするためのエクスパンダとlanguage_id内のコードは次のとおりです。
from ..utilities.functions import *
このエラーが表示されます:
ValueError: Attempted relative import beyond toplevel package
私はそれを何度も調べましたが、ドキュメントに従っているようです。誰かがここで何が悪いのかについて何か考えがありますか?
気にしないで、私はそれを解決しました:
src/
main.py
mod/
__init__.py
components/
__init__.py
expander.py
language_id.py
utilities/
__init__.py
functions.py
main.pyは、サブパッケージを次のように参照します。
from mod.components.expander import *
from mod.utilities.functions import *
expander.pyとlanguage_id.pyは、以下を使用してfunctions.pyにアクセスできます。
from ..utilities.functions import *
しかし、興味深いのは、expander.pyが使用するコンポーネントディレクトリ内にテキストファイルがあったことです。ただし、実行時に、同じディレクトリにあるにもかかわらず、ファイルを見つけることができませんでした。テキストファイルをmain.pyと同じディレクトリに移動しましたが、機能しました。直感に反しているようです。