Djangoを使用しており、models.admin.pyという名前のファイルがあり、models.pyで次のアイデアを実行したいと考えています。
from "models.admin" import *
ただし、二重引用符があると構文エラーになります。しかし、私がするだけなら
from models.admin import *
その後、「ImportError:adminという名前のモジュールはありません」が表示されます
名前にピリオドがあるpythonファイルからインポートする方法はありますか?
実際には、無効な名前のモジュールをインポートできます。ただし、そのためには imp
を使用する必要があります。ファイルの名前がmodels.admin.py
、あなたはできる
import imp
with open('models.admin.py', 'rb') as fp:
models_admin = imp.load_module(
'models_admin', fp, 'models.admin.py',
('.py', 'rb', imp.PY_SOURCE)
)
しかし imp.find_module
および imp.load_module
使用する前に。
本当にしたい場合は、impモジュールを使用して、通常とは異なるファイル名(たとえば、「。py」の前に「。」を含むファイル名)のモジュールをインポートできます。
>>> import imp
>>> a_b = imp.load_source('a.b', 'a.b.py')
>>> a_b.x
"I was defined in a.b.py!"
しかし、それは一般的に悪い考えです。パッケージを使用しようとしている可能性が高いです。その場合は、「a」という名前のディレクトリを作成し、「b.py」という名前のファイルを含める必要があります。次に、「import a.b」はa/b.pyをロードします。
ファイルの名前はmodels/admin.py
です。 ( ソース )
つまり、models
というディレクトリでadmin.py
と呼ばれる必要があります。
次に、from models.admin import *
を使用してインポートできます。これは、Pythonパスにあることを前提としています。
いいえ、名前にピリオド(または疑問符、感嘆符など)が含まれている場合、pythonファイルをモジュールとしてインポートすることはできません。 pythonモジュールの名前(.pyを含まない)は、有効なpython名でなければなりません(つまり、変数名として使用できます)。