如何从python导入路径中删除当前目录

时间:2014-08-27 17:36:21

标签: python linux mercurial

我想使用hg本身的mercurial存储库。也就是说,我从https://www.mercurial-scm.org/repo/hg克隆了Mercurial,并希望在克隆的存储库中运行一些hg命令。问题是当在这个克隆hg内运行hg时,可执行文件试图从这个目录而不是/usr/lib/pythonVERSION等加载它的python模块。据我所知,这是因为Python导入路径{ {1}}包含一个空字符串作为第一个条目,可能意味着“当前目录”。未设置sys.path环境变量。

问题是如何阻止我安装的PYTHONPATH导入“错误的”模块。

2 个答案:

答案 0 :(得分:1)

我处理这个主题的方法是创建一个包含以下内容的/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中,但这会影响您的整体体验。

答案 1 :(得分:0)

@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")

相关问题