簡體   English   中英

如何從python導入路徑中刪除當前目錄

[英]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.

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