[英]How to remove current directory from python import path
我想使用hg
本身的mercurial存儲庫。 也就是說,我從https://www.mercurial-scm.org/repo/hg克隆了Mercurial,並希望在克隆的存儲庫中運行一些hg
命令。 問題是當在這個克隆中運行hg
時, hg
可執行文件試圖從這個目錄而不是從/usr/lib/pythonVERSION
等加載它的python模塊。據我所知,這是因為Python導入路徑sys.path
包含一個空字符串as第一個條目,可能意味着“當前目錄”。 未設置PYTHONPATH
環境變量。
問題是如何防止我安裝的hg
導入“錯誤”模塊。
我處理這個主題的方法是創建一個/usr/local/bin/hg
sh腳本,其中包含以下內容:
#!/bin/sh
PYTHONPATH=/usr/lib/pythonVERSION/site-packages /usr/bin/hg
(基於Ubuntu的分發使用dist-packages
而不是site-packages
)
PYTHONPATH
是一個特殊的環境變量,受Python解釋器的尊重,可以獲得額外的模塊導入路徑。
或者,您可以將PYTHONPATH
導出到shell中,但這會影響您的整體體驗。
@ragol,我認為Padraic有正確的解決方案。 在您嘗試運行hg命令的python腳本中,您需要包含以下命令: sys.path.insert(0,"/usr/lib/pythonVERSION")
將命令放在python腳本的最開頭。 該命令告訴python在導入模塊時首先查看/usr/lib/pythonVERSION
目錄。
如果這不起作用,您可能需要更具體的路徑。 例如,如果您嘗試導入的模塊位於/usr/lib/pythonVERSION/site-packages/hg
目錄中,則可以使用以下命令: sys.path.insert(0,"/usr/lib/pythonVERSION/site-packages/hg")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.