我和其他一些開發人員就開源項目進行了一些討論。我是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. 僅適用於JSP的應用程序
- 4. GWT設計師:是否僅適用於桌面應用程序?
- 5. 是MVC僅適用於Web應用程序
- 6. Django應用程序的本地化僅適用於forms.py而不適用於models.py
- 7. virtualenv - 無站點包不適用於我
- 8. Windows身份基礎僅適用於內部應用程序/站點?
- 9. 應用程序不適用於4.0.3,但它適用於2.3.3
- 10. 應用程序適用於android 2.2,但不適用於2.3
- 11. 適用於瀏覽器,但不適用於應用程序
- 12. 是不是一個協議?並且它僅適用於網絡應用程序?
- 13. 適用於Azure B2C SPA應用程序的npm包適用於Angular 4和Typescript
- 14. xmpp是否適用於聊天室應用程序(不是Messenger)?
- 15. 創建網絡推送通知(不適用於android應用程序,但僅適用於網站)?
- 16. NSNetService是否僅適用於.local域?
- 17. pushViewController僅適用於動畫:是的
- 18. RedirectToAction是否僅適用於HttpGet?
- 19. Teradata連接適用於一個站點,但不適用於另一個站點
- 20. 使REST調用僅適用於本地應用程序?
- 21. PHP可以用於製作桌面應用程序還是僅用於製作基於Web的應用程序?
- 22. launchUriAsync是否適用於.edu網站?
- 23. 適用於iPhone的Flex應用程序
- 24. 適用於Facebook的Android應用程序
- 25. System.Net.FTPWebRequest不適用於uwp應用程序
- 26. 適用於Mac的Winform應用程序
- 27. 適用於Windows的Python應用程序
- 28. Openfire不適用於Rails應用程序
- 29. 適用於windowsphone的Googledrive應用程序?
- 30. backbone.js適用於大型應用程序
聽起來像你們真的可以從virtualenv + pip(或zc.buildout)中獲益。 – 2009-04-27 12:00:01
我們對out配置沒有任何問題 - virtualenv沒有增加太多價值。我們使用某種虛擬機(也許VMWare - 別人負責這一點)來託管各種服務器進行測試,質量保證,製作等。在單臺機器上使用許多虛擬機似乎比虛擬機簡單。 – 2009-04-27 12:31:42