簡體   English   中英

我應該將我的Python項目添加到site-packages目錄中,還是將項目附加到PYTHONPATH?

[英]Should I add my Python project to the site-packages directory, or append my project to PYTHONPATH?

我有一個Python項目,其中包含三個組件:主要的可執行腳本,這些腳本所依賴的模塊以及這些腳本操作的數據(sqlite3數據庫,平面文件等)。 頂層具有__init__.py文件,因此如果需要,其他程序也可以從模塊中借用。

問題是,將項目移至默認的站點軟件包目錄,還是修改PYTHONPATH以在項目上方包含一個目錄(以便可以從中導入項目),是否更“ Pythonic”或“正確”? 一方面,我所描述的並不是嚴格意義上的“包”,而是具有可以被視為包的數據的“項目”。 因此,我傾向於修改PYTHONPATH(畢竟,PYTHONPATH必須存在是有原因的,對吧?)

絕對不要將您的項目添加到站點軟件包中,這會破壞系統Python的安裝,並且會在其他應用程序出現在此處或您需要安裝某些東西時立即觸發。

最后,有兩種流行的選項可用於以隔離方式安裝python應用程序

使用virtualenv

請參閱virtualenv項目。 它允許

  • 創建新的隔離python環境-此環境的python與系統1不同,它具有自己的PYTHONPATH設置,可將所有已安裝的軟件包保留為私有狀態。
  • 從命令行激活和停用給定的virtualenv以供命令行使用。 activate ,您可以運行pip install等,它將僅影響給定的virtualenv安裝。
  • 通過virtualenv Python副本開始調用任何Python腳本-這將使用相關的virtualenv(請注意,無需調用任何activate

使用zc.buildout

該軟件包提供命令buildout 有了它,您可以使用特殊的配置文件,並且可以使用所有程序包和腳本創建本地python環境。

結論

  • virtualenv今天似乎更受歡迎,我發現它更容易學習和使用
  • zc.buildout可能對您也zc.buildout ,但是要准備更長的學習時間
  • 在非常特殊的情況下(pip,easy_install),應始終將安裝到系統Python目錄中的文件保留下來,最好避免這樣做。
  • 也可以選擇安裝到私有目錄和manipulatig PYTHONPATH中,但是您會重復一遍, virtualenv已經提供了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM