我正在創建模塊(帶有子模塊)。我們稱它爲lib
。我試圖讓它工作如下:Python:從執行的模塊導入
- 我能夠運行它(有
lib.__main__
)。它內部使用lib.utils
。 - 執行部分工作時是加載用戶傳遞的其他文件/模塊。目前它通過
importlib.import_module(name)
來完成。 - 此加載模塊還需要使用
lib.utils
。
我有以下選擇:
- 在加載模塊使用
import utils
代替import lib.utils
。我覺得它有點誤導,並想避免這種情況。 - 以任何外部方式運行模塊,甚至使用內部只有
import lib.__main__
的文件。
我唯一想做的事情就是做sys.path.append(os.getcwd())
。不僅看起來很髒,而且還使log.utils
模塊加載兩次。
有什麼可以讓我執行lib.__main__
,但需要在加載的模塊中使用import lib.utils
?
您是否遇到某種錯誤?只要'lib'和持有要導入的模塊的目錄位於python路徑中,就應該這樣工作。 – tdelaney 2015-03-13 16:28:06
...假設'lib'是一個包(具有'__init __。py') – tdelaney 2015-03-13 16:29:36
'lib'具有'__init __。py'並且位於當前目錄中。當我將它('lib'的父項)添加到PYTHON_PATH或sys.path'import lib.utils'工作中,但再次加載模塊時(因爲'lib .__ main__'認爲它使用'utils',而不是'lib.utils' )。 – Noxitu 2015-03-13 17:05:01