Python __import __()2つの場所に同じモジュールが存在する場合、2つの異なるディレクトリからインポート

StackOverflow https://stackoverflow.com/questions/4601185

  •  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などとして持っていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top