我有現有的Python模塊名稱中帶有一個破折號,foo-bar.pyPython模塊用破折號或連字符( - )的名稱中
更改模塊名稱是東西,我寧願避免因爲模塊是共享的,我將不得不追逐所有使用它的地方,這樣我的特殊情況纔會起作用。
有沒有辦法加載名稱中包含通常被禁止的' - '的模塊? (我明白這不是最佳實踐,但是對於這種情況,我不想重新設計和測試更多的應用程序,我也不認爲我的公司主人會贊同我的服用方式執行此類更改的時間。)
我有現有的Python模塊名稱中帶有一個破折號,foo-bar.pyPython模塊用破折號或連字符( - )的名稱中
更改模塊名稱是東西,我寧願避免因爲模塊是共享的,我將不得不追逐所有使用它的地方,這樣我的特殊情況纔會起作用。
有沒有辦法加載名稱中包含通常被禁止的' - '的模塊? (我明白這不是最佳實踐,但是對於這種情況,我不想重新設計和測試更多的應用程序,我也不認爲我的公司主人會贊同我的服用方式執行此類更改的時間。)
您可以使用__import__()
來執行此操作。例如:
foobar = __import__("foo-bar")
但是你真的應該改名模塊來代替。這樣可以避免模塊的文件名與程序中使用的標識符不同的混淆。
謝謝。我確實知道應該在任何可行的地方遵循公約。我將在部門代碼審查期間提出這個具體問題。 –
如何導入一個子模塊使用這種方法? – Fydo
我知道這個問題已經回答了滿意的提問者,但這裏是另一個答案,我認爲有一些優點使用__import__()
。
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
根據文檔:
"This provides an implementation of import which is portable to any
Python interpreter. This also provides an implementation which is
easier to comprehend than one implemented in a programming language
other than Python."
Python 2.7
+僅
我正在尋找如何做到這一點,你的答案比舊的答案適用於我的情況更好。如果你看到已有人的獨特答案,將其添加爲新的答案,這樣一來,像我這樣的人就可以在一個地方找到所有相關信息,這總是很好。 –
你不能只是做一個發現,在檔案在你的IDE和替換所有'FOO,bar's與'foobar'或其他?那有多難? – agf
http://stackoverflow.com/questions/761519/is-it-ok-to-use-dashes-in-python-files-when-trying-to-import-them – BenH
這個答案特別是:http:// stackoverflow.com/questions/761519/is-it-ok-to-use-dashes-in-python-files-when-trying-to-import-them/762693#762693 – BenH