-1
私は、importステートメントのpackagenameがpythonスクリプトの実際のファイル名と等しい場合、なぜpythonに問題があるのだろうかと思います。あなたはそれを深く説明できますか?それはいつも愚かな間違いです。ありがとうございました!packagenameがfilenameと等しい場合にインポートエラーが発生するのはなぜですか?
私は、importステートメントのpackagenameがpythonスクリプトの実際のファイル名と等しい場合、なぜpythonに問題があるのだろうかと思います。あなたはそれを深く説明できますか?それはいつも愚かな間違いです。ありがとうございました!packagenameがfilenameと等しい場合にインポートエラーが発生するのはなぜですか?
あなたの質問が正しく理解されていれば、同じ名前のパッケージとモジュールのインポートをどのように処理するかを尋ねています。モジュールfoo.py
とパッケージfoo/
があるとします。
ファイルfoo.py
:
print("foo module loaded")
ファイルfoo/__init__.py
:
print("foo package loaded")
ファイルtest1.py
:
import foo
ファイルtest2.py
:
import os, imp
def import_module(dir, name):
""" load a module (not a package) with a given name
from the specified directory
"""
for description in imp.get_suffixes():
(suffix, mode, type) = description
if not suffix.startswith('.py'): continue
abs_path = os.path.join(dir, name + suffix)
if not os.path.exists(abs_path): continue
fh = open(abs_path)
return imp.load_module(name, fh, abs_path, (description))
import_module('.', 'foo')
は今すぐテストを実行している:
$ python test1.py
foo package loaded
$ python test2.py
foo module loaded
あなたは自分自身からパッケージをインポートしようとしていますか?何のために? –
私の知る限り、パッケージ名とファイル名は同じにすることができます! –
私はそれ自体からパッケージをインポートしたくありません。それは単にファイルの悪い命名です。たとえば、 "youtube"という名前のパッケージがあり、Pythonファイルのimportステートメント "youtube"と同じ名前が付けられているとします。なぜそれはPythonで処理できないのですか? – schui