我和其他一些開發人員就開源項目進行了一些討論。我是python新手,但在我看來,網站包是爲圖書館而不是終端用戶應用程序。這是真的,還是站點包是一個合適的地方來安裝一個應用程序,由最終用戶運行?站點包是適用於應用程序還是僅適用於庫?
回答
一旦你到了你的應用程序,準備分發點,包起來爲您最喜愛的分佈/在將你的庫代碼在站點包和可執行腳本的系統路徑的方式操作系統。
在此之前(即對所有的開發工作),不做任何上述的:保存自己主要的頭痛和使用zc.buildout或virtualenv保持你的代碼(如果你喜歡,它的依賴以及)隔離來自系統的其餘部分。
最終用戶運行的程序通常位於其路徑中的某處,模塊目錄中的大部分代碼通常位於站點包中。
許多python程序將在路徑中放置一個小腳本,該腳本導入模塊並調用「main」方法來運行該程序。這允許程序員進行一些前期檢查,並且如果需要找到需要的模塊,可能會修改sys.path。這也可以加速大型程序的加載時間,因爲只有導入的文件將從字節碼運行。
我們這樣做。
我們下載的大多數東西都是在網站包中。他們來自pypi
或Source Forge或其他外部來源;他們很容易重建;它們被高度重用;他們變化不大。
必須的東西,我們寫的是在其他位置(通常在/opt
,或c:\opt
),幷包含在PYTHONPATH
。
有沒有很好保持我們的東西從site-packages
的理由。然而,我們的微弱藉口是我們的東西變化很大。幾乎不斷。每當我們認爲我們有更好的東西時,要重新安裝在網站包裝中就有點痛苦。
由於我們正在測試我們的工作目錄或SVN檢出目錄,因此我們的測試環境大量使用PYTHONPATH
。
PYTHONPATH
的開發使用流入生產。我們使用setup.py
進行生產安裝,但在/opt
下安裝到備用家中,並將PYTHONPATH
設置爲包括/opt/ourapp-1.1
。
網站包是爲圖書館,當然。
混合的方法可能會工作:您可以將您的應用程序所需的庫安裝在site-packages中,然後在其他地方安裝主模塊。
如果您可以將應用程序的一部分轉換爲庫並提供API,那麼site-packages是一個不錯的選擇。這實際上是多少個Python應用程序執行的。
但是,從用戶或管理員的角度來看,這實際上並不是問題所在。問題是我們如何管理已安裝的東西。安裝完成後,我如何升級並卸載它?
我使用Fedora。如果我使用它附帶的python,我不喜歡將東西安裝到RPM系統以外的站點包。在某些情況下,我已經自己構建了rpm來安裝它。
如果我在RPM之外構建自己的python,那麼我自然會想用python的機制來管理它。
第三種方法是使用諸如easy_install之類的東西來安裝這樣的東西,例如作爲用戶到主目錄。
所以
- 允許包裝分佈。
- 允許選擇要使用的python。
- 允許使用python安裝的發行版,如果您沒有對站點包的權限。
- 允許使用python安裝在可以使用站點包的分佈之外。
- 1. PhoneGap僅適用於NativeApplications還是適用於遠程Web應用程序HTML頁面?
- 2. 應用程序僅適用於mdpi(320x480 ...)
- 3. 僅適用於iOS的應用程序
- 4. 僅適用於JSP的應用程序
- 5. 僅適用於本機應用程序還是帶本機應用程序的Web應用程序?
- 6. GWT設計師:是否僅適用於桌面應用程序?
- 7. 是MVC僅適用於Web應用程序
- 8. SQL注入只適用於網頁,還是它也適用於「正常」程序?
- 9. signalR僅適用於聊天應用程序網站嗎?
- 10. 僅適用於HTTPS的空響應,僅適用於Google Chrome
- 11. IBM Worklight 6.0 - 應用程序僅適用於HTTP或HTTPS,不適用於
- 12. Django應用程序的本地化僅適用於forms.py而不適用於models.py
- 13. virtualenv - 無站點包不適用於我
- 14. Windows身份基礎僅適用於內部應用程序/站點?
- 15. NSDocument *類僅適用於基於文檔的應用程序嗎?
- 16. 應用程序不適用於4.0.3,但它適用於2.3.3
- 17. 應用程序適用於android 2.2,但不適用於2.3
- 18. Charles SSL Proxy適用於chrome,但不適用於應用程序
- 19. 適用於瀏覽器,但不適用於應用程序
- 20. 是不是一個協議?並且它僅適用於網絡應用程序?
- 21. 適用於Azure B2C SPA應用程序的npm包適用於Angular 4和Typescript
- 22. xmpp是否適用於聊天室應用程序(不是Messenger)?
- 23. 適用於io綁定應用程序的多線程:好還是壞
- 24. 創建網絡推送通知(不適用於android應用程序,但僅適用於網站)?
- 25. RadStyleSheetManager僅適用於Telerik Controls CSS嗎?還是可以將它用於合併站點的所有CSS?
- 26. Wix!(bind.AssemblyFullName.fileId)僅適用於GACed程序集?
- 27. 適用於事件驅動站點的CMS適用於:
- 28. Angular 2是否僅適用於NodeJS
- 29. pushViewController僅適用於動畫:是的
- 30. RedirectToAction是否僅適用於HttpGet?
聽起來像你們真的可以從virtualenv + pip(或zc.buildout)中獲益。 – 2009-04-27 12:00:01
我們對out配置沒有任何問題 - virtualenv沒有增加太多價值。我們使用某種虛擬機(也許VMWare - 別人負責這一點)來託管各種服務器進行測試,質量保證,製作等。在單臺機器上使用許多虛擬機似乎比虛擬機簡單。 – 2009-04-27 12:31:42