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

我想和hg本身的mercurial仓库一起工作。 也就是说,我从https://www.mercurial-scm.org/repo/hg克隆了Mercurial,并希望在克隆的仓库中运行一些hg命令。 问题是,当在这个克隆中运行hg时, hg可执行文件尝试从这个目录加载它的python模块而不是从/usr/lib/pythonVERSION等等。据我所知,这是因为Python导入pathsys.path包含一个空string第一项可能意味着“当前目录”。 没有设置PYTHONPATH环境variables。

问题是我怎样才能防止我安装的hg导入“错误”的模块。

Solutions Collecting From Web of "如何从python导入path中删除当前目录"

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

我将处理这个主题的方式是创建一个带有以下内容的/usr/local/bin/hg sh脚本:

 #!/bin/sh PYTHONPATH=/usr/lib/pythonVERSION/site-packages /usr/bin/hg 

(基于Ubuntu的distributives使用dist-packages而不是site-packages

PYTHONPATH是Python解释器为了获得额外的模块导入路径而特别推荐的一个环境变量。

或者,您可以将PYTHONPATH导出到您的外壳中,但这会影响您的整个体验。