Python __import __()2つの場所に同じモジュールが存在する場合、2つの異なるディレクトリからインポート
-
25-09-2019 - |
質問
このようなディレクトリ構造があるPythonアプリケーションがあります。
-pythonapp
-mainpython.py
-module1
-submodule1
-file1.py
-file2.py
-submodule2
-file3.py
-file3.py
-submodule3
-file1.py
-file2.py
-file5.py
-file6.py
-file7.py
submodule3の下でpythonユーティリティ(mainpython.pyから)をインポートしようとすると、submodule1から最初の2つのファイルを取得します(Submodule1と3には同じ名前の2つの異なるファイルがあることに注意してください)。ただし、競合がない場合、同じインポートが正常に機能します。つまり、SubModule3からファイル5,6,7を正しくインポートします。
これがコードです:
name=os.path.splitext(os.path.split("module1\submodule3\file1.py")[1])[0] --> file1.py name here is passed dynamically.
module = __import__(name)
//ここに名前は「file1」のようなものです(ただし、上記の問題では、ファイルの名前を動的に渡す場合)が、完全なパッケージを「module1.submodule1.file1」として渡すと、それは失敗します「名前file1を持つモジュールなし」と言っているImporterRor
ここで、問題は、「module1.submodule3.file2」の下のもののみを使用するようにインタープリターにどのように指示するかということです。 Pythonを使用しています
これは本当に緊急のものであり、私はすべての試みを使い果たしました。経験豊富なPython開発者が私のためにこれを解決できることを願っていますか?
解決
空のものを持っていることで、ディレクトリからパッケージを作成してみてください __init__.py
それぞれのファイルと、使用してパッケージから特定のモジュールを参照するときはいつでも
from submodule import mymodule
構文。パッケージの作成は、モジュールを異なる名前空間に分離する良い方法です。モジュールに応じてモジュールに名前を付け、File1、file2などとして持っていません。
所属していません StackOverflow