ちょっと私はそうのように設定したフォルダ構造とセット階層モジュールを持つプロジェクトに取り組んでいます:輸入
module_name/
__init__.py
constants.py
utils.py
class_that_all_submodules_need_access_to.py
sub_module_a/
__init__.py
sub_module_a_class_a.py
sub_module_a_class_b.py
useful_for_sub_module_a/
__init__.py
useful_class_a.py
useful_class_b.py
sub_module_b/
__init__.py
sub_module_b_class_a.py
sub_module_b_class_b.py
などなどなど...
問題ですが、 .pyにインポートを設定する方法がわからないので、sub_module_a/useful_for_sub_module_a/useful_class_a.pyからclass_that_all_submodules_need_access_to.pyにアクセスできます。
Google/StackOverflowでこれを調べてみると、疲れてしまいました。 PyCharmのプロジェクトで作業しているときにこのバグに遭遇しないように、PyCharmにはパスが設定されていますが、他の環境からのみアクセスできます。
ここでは、私が思いついた特に控えめな解決策を紹介します。マイsub_module_a/useful_for_sub_module_a/のinitの.pyのようになります。これはsub_moduleで_ * /、どこの代わりに3の似ている
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')))
import module_name
」.. 'それだけで2(IEのS' .. '' ..上記のsys.path.insert行では '..'、 '..'、 '..'の代わりに ')を使用します。そしてsub_module_a/useful_for_sub_module_a/useful_class_a.pyで、私はこのようなモジュール名/ constants.py(その他)をインポートする必要があります。このソリューションが動作します
import module_name.constants
from module_name.class_that_all_submodules_need_access_to import ImportantClass
ながらがより良い/よりがある場合、私は思っていましたエレガントな方法でインポートおよび/またはフォルダの階層を設定する?私はこのモジュールのユーザのためのpythonシステムパスをつぶすことについてが心配です。それも有効な懸念ですか?
また、サイトのパッケージフォルダにコピーするだけの解決策です:) –