2011-04-05 105 views
3

作爲一個開始的程序員(我寧願做腳本),我正在努力處理越來越多的腳本和模塊。python代碼組織

目前,小腳本位於添加到我的pythonpath的常規文件夾中。特定的項目會獲得自己的子文件夾,但越來越多的人嘗試將這些項目的常規部分編寫爲可供其他項目使用的模塊。但是我不能只導入它們,除非這個子文件夾也在我的Python路徑中。

我不知道如何組織這一切。我很樂意爲您提供關於組織(python)代碼的提示和建議。謝謝!

+0

謝謝大家的回答。你指出了'__init __。py'的含義。這正是我所需要的:現在我將'__init __。py'添加到我想要導入的工作文件夾的每個子文件夾中。我所有的代碼都在我想要的地方,並且易於導入。很好的幫助,謝謝! – saroele 2011-04-07 20:14:59

+0

P.S.您的腳本*是*編程。 :-)保持它,你會在你知道它之前回答問題。 – 2011-04-07 20:58:44

+0

謝謝柯克。你說得對,事情可以很快改變,尤其是所有這些專家幫助我:-) – saroele 2011-04-07 21:54:34

回答

2

請務必閱讀有關Packages,特別是有關在要從中導入的目錄中創建名爲__init__.py的文件的部分。

我在我的主目錄中有一個名爲MyCompany的git存儲庫。從/usr/local/lib/python2.7/site-packages/到它有一個鏈接。 MyCompany裏面有package1,package2,package3等。在我的代碼中,我寫了import MyCompany.package1.modulefoo。 Python看起來在site-packages,發現MyCompany。然後它找到package1子目錄,並在其中包含__init__.py文件 - yay,一個包!然後它在該目錄中導入modulefoo.py文件,並且我已關閉並正在運行。

+0

你寫道:_ /有一個從/usr/local/lib/python2.7/site-packages/到它的鏈接._我正在開發windows。快捷方式會起作用嗎? – saroele 2011-04-05 19:45:58

+0

我不知道。如果沒有,您可以直接從該文件夾中工作,併爲其創建一個漂亮的桌面快捷方式,以便您輕鬆找到它。這種安排在服務器上稍有不同,但如果你可以在工作站上對它進行整理,那麼在時間到了的時候你可以計算出服務器部分。 – 2011-04-05 19:50:18

+0

根據您的Windows版本(從Windows Vista開始),您還可以使用符號鏈接:http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/ – arie 2011-04-05 22:43:39

2

通用自定義模塊應該去~/.local/lib/pythonX.Y/site-packages/usr/local/lib/pythonX.Y/site-packages如果它們應該提供給每個人。這兩個路徑都可以在您的$PYTHONPATH中自動獲得。 (前者自Python 2.6起可用 - 請參閱PEP 370 – Per user site-packages directory。)

+0

感謝您的回答。這些是linux路徑,對不對?當我安裝一個新的Python版本時,'.../site-packages'中的模塊不會被覆蓋? – saroele 2011-04-05 19:44:29

+0

是的,這些是linux路徑。這些地方的模塊將不會被覆蓋,因爲核心Python在任何包含'local'的路徑中都沒有模塊。除此之外,這兩條路徑是版本不可知的(注意兩條路徑中的「X.Y」部分)。 – igor 2011-04-05 19:52:13

+1

對於所有的Linux發行版來說,並不是這樣,絕對不是FreeBSD(Python進入/ usr/local)和一些OS X軟件包管理器(它位於/ opt中)。不過,關於站點包的部分單獨保留是正確的。 – 2011-04-05 19:57:53