-1
我想知道爲什麼python有一個問題,當導入語句的包名稱等於python腳本的實際文件名。你能深入解釋一下嗎?這總是一個愚蠢的錯誤。謝謝!爲什麼packagename等於文件名時會出現導入錯誤?
我想知道爲什麼python有一個問題,當導入語句的包名稱等於python腳本的實際文件名。你能深入解釋一下嗎?這總是一個愚蠢的錯誤。謝謝!爲什麼packagename等於文件名時會出現導入錯誤?
如果我已經正確理解你的問題,你問如何處理包和模塊導入,如果他們有相同的名稱。假設你有一個模塊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文件與導入語句「youtube」具有相同的命名。爲什麼不能Python處理? – schui