編輯:根據Ulf Rompe的評論,重要的是你使用「1」而不是「0」,否則你會打破sys.path。爲什麼使用sys.path.append(path)而不是sys.path.insert(1,path)?
我一直在做蟒蛇相當長一段時間(一年以上),我總是困惑,爲什麼人們建議你使用sys.path.append()
而不是sys.path.insert()
。讓我來證明一下。
假設我正在研究一個名爲PyWorkbooks(安裝在我的計算機上)的模塊,但我正在同時使用合併PyWorkbooks的不同模塊(比方說PyJob)。當我在PyJob上工作時,我在PyWorkbooks中發現了我正在糾正的錯誤,所以我想導入一個開發版本。
有兩種工作方式(例如,我可以將PyWorkbooks項目放在PyJob中),但有時我仍然需要使用路徑。然而,我不能簡單地做一個sys.path.append()
到PyWorkbooks在的文件夾。爲什麼?因爲python會先找到我安裝的PyWorkbooks!
這就是爲什麼你必須做一個sys.path.insert(1 path_to_dev_pyworkbooks)
總結:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
或:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
這造成了幾對我來說,在過去,我真的很喜歡它,如果我們(作爲一個社區)開始推薦sys.path.insert(1, path)
,就好像你正在手動插入一條路徑一樣,我認爲可以肯定地說這就是路徑你想用!
還是我有什麼問題?這是一個有時困擾我的問題,我希望它公開!
我已經完成了ys.path.insert(1,dev_folder)'但它仍然沒有找到開發模塊,只使用已安裝的模塊。我該如何解決? – endolith 2014-06-14 15:28:59