2012-04-08 57 views
1

只有一個或兩個模塊,我需要從一個文件夾包含其他幾個Python模塊。當我將文件夾添加到我的路徑中時,我有效地使該文件夾中的所有模塊都可供我使用。但有幾個過期的模塊,我不想要。是否有可能只爲我提供這些模塊的某個子集?Python:是否有可能只有你的sys.path文件夾中的特定模塊

+0

刪除過時的? – miku 2012-04-08 19:36:07

+0

不要導入過時的? – 2012-04-08 19:37:09

+0

將過期的人移到另一個文件夾? – unsym 2012-04-08 19:44:12

回答

1

如果

import X 

進口模塊X.沒有別的。你的Python路徑上的東西不等於被自動導入(它只是可導入的)。另請參見:

+0

我其實意味着可以導入,而不是實際導入。例如,我在virtualenv中個人安裝了numpy,並且全局系統上有一個過時的版本。我只想從全球圖書館購買PyQt,但我不想冒險讓舊版本的numpy與全球版本衝突。 – 2012-04-08 19:52:13

2

讀你的問題我的理解是

  1. 要包括在你的PYTHONPATH的文件夾,因爲你需要幾個模塊,從它。
  2. 由於它包含一些與您使用的版本相比可能已經過期的其他模塊,因此您不想最終導入錯誤的庫。

我會建議兩個選項,可能適合你。

  1. 確保您包含的此文件夾位於sys.path的末尾。這將確保您已經導入的任何模塊(如果存在於新包含的文件夾中)不會從該特定位置導入。
  2. (僅用於* nix)創建另一個文件夾,併爲您感興趣的文件創建符號鏈接。然後應該包含您創建的其他文件夾。

閱讀您的意見,我建議,最好的辦法是在某處添加以下行腳本,但你import`之前

import sys 
sys.path.append('/whatever') 
+0

是的,這正是我所要求的。無論如何要確保我包含的文件夾位於sys.path的末尾嗎? 例如,是否有添加PYTHONPATH中的目錄的時間順序? – 2012-04-08 19:56:26

+0

@ChristopherDorian:你打算如何將路徑添加到sys.path?如果你澄清它會更容易回答。一個顯而易見的方法是'import sys \ nsys.path.append(「/ whatever」)'。這可以確保您的庫位於搜索路徑的末尾。你還有其他方式嗎? – Abhijit 2012-04-08 19:58:29

+0

現在,我一直在使用PYTHONPATH來添加文件夾。到目前爲止,它出現在sys.path中我自己的本地庫下面,但我不確定這是否總是如此。 – 2012-04-08 20:03:08

1

創建一個新的目錄。對於要導入的每個模塊,添加一個指向真實模塊的符號鏈接(ln -s)。然後將新目錄添加到您的路徑中,並且您不必使用包含訂單來玩遊戲。

mkdir ./mymods 
export PYTHONPATH="$PYTHONPATH":`pwd`/mymods 
cd mymods 
ln -s ../allmods/module1.py 
ln -s ../allmods/module2.py 
相關問題