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