簡體   English   中英

將python包的路徑添加到sys.path

[英]Add path to python package to sys.path

我有一種情況需要將python軟件包的路徑添加到sys.path (而不是其父目錄),但是通常按名稱引用該軟件包。 也許這很奇怪,但是讓我舉例說明我需要什么,也許你們知道如何實現這一目標。

我在/ home / me / python之類的路徑中擁有各種實驗性文件夾,模塊等。 現在,我不想將該文件夾添加到我的sys.pathPYTHONPATH )中,因為有一些實驗性模塊,其名稱可能與有用的名稱沖突。 但是,在/home/me/python我想要一個類似pyutils的文件夾。 所以我想將/home/me/python/pyutilsPYTHONPATH ,但是,能夠通過其名稱pyutils來引用該包...就像我將/home/me/python到路徑中一樣。

一個有用的事實是,向python路徑添加內容不同於將其導入到解釋器中。 您可以對模塊和子模塊進行結構化,以免名稱沖突。

在這里查看有關如何創建模塊的信息。 我閱讀了文檔,但我認為模塊布局需要邊做邊學,這意味着創建模塊,然后將其導入腳本,並查看導入是否笨拙或需要太多資格。

單獨考慮python導入系統 導入某些內容時,可以使用“導入...為”功能在導入時為其命名不同的名稱,從而防止命名沖突。

您似乎已經了解了如何使用sys.path()更改PYTHONPATH,如此處所述

您有多種選擇:

  • 創建一個新目錄pyutilsdir ,將pyutils放在pyutilsdir ,然后將pyutilsdir添加到PYTHONPATH中。
  • 將實驗代碼移到/home/me/python之外,然后將python添加到您的PYTHONPATH
  • 重命名實驗模塊,以便其名稱不會與其他模塊沖突。 然后將python添加到PYTHONPATH
  • 使用githg類的版本控制系統,以根據需要使實驗模塊可用或不可用。

    您可以擁有一個沒有實驗模塊的master分支,以及一個包含它們的feature分支。 例如,使用git,您可以使用

     git checkout [master|feature] 

    /home/me/python/pyutils (git repo目錄)的內容將根據簽出的提交而改變。 因此,使用版本控制,您可以將實驗模塊保留在pyutils ,但僅在簽出feature分支時才使它們存在。

我會回答我自己的問題,因為我在寫問題時有個主意,也許有人會需要。 我從該文件夾向我的site-packages文件夾添加了一個鏈接,如下所示: ln -s /home/me/python/pyutils /path/to/site-packages/pyutils

然后,由於PYTHONPATH包含/path/to/site-packages文件夾,並且其中有一個pyutils文件夾(帶有init .py),因此我可以像這樣導入:

from pyutils import mymodule

/home/me/python的其余部分不在PYTHONPATH

暫無
暫無

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

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