我在Windows机器上有多个Python版本:哪个是“正确”的?

0 投票
5 回答
1201 浏览
提问于 2025-04-16 09:52

在继续研究这个在ServerFault上提问的问题时:

https://serverfault.com/questions/221203/mercurial-hook-fails-on-windows

我发现了一个有趣而且有点让人不安的事情:我在我的电脑上发现了三个不同版本的Python(如果算上那个“官方”的版本,实际上是四个,但它似乎没有附带DLL文件……)。这是我用文件搜索工具找到的截图:

alt text

更多信息:

  • 我正在使用64位的Windows 7
  • TortoiseHG和Mercurial的目录都在我的路径中,而且Mercurial的目录排在前面。
  • 我在c:\Python26安装了Python 2.6
  • 我没有任何PYTHON相关的环境变量设置。(我需要设置吗?)

我怀疑这可能是我上面提到的问题的根源,但我想在这里问一下,因为这个问题特别和Python有关。

我尝试用彼此替换这两个DLL,但当我使用Mercurial自带的那个时,TortoiseHg就不工作了。

我觉得我的电脑上“应该只有一个”Python。那我该怎么做到呢?

5 个回答

1

我想,海龟(Tortoise)和Mercurial可能是把自己版本的Python嵌入到软件里,用来完成他们需要做的事情。

我觉得你不用太担心,DLL文件不会互相冲突——Windows在寻找DLL文件时,最后会查看PATH这个地方。

参考链接:http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx

2

针对你之前提到的问题,mercurial这个包是安装在了mercurial的Python环境下,但你却是在C:\python26这个地方运行脚本。所以你需要在mercurial的Python环境下安装并运行你的脚本。

正如seth之前提到的,在同一台机器上有多个Python环境是完全可以的,但你在安装Python库的时候要注意,确保你是在正确的环境下,也就是说在调用Python之前要把路径设置正确。

1

顺便提一下:你在“C:\Python26”安装的Python会把它的DLL文件放到Windows目录里,在你的情况下是“C:\Windows\SysWOW64”。

针对你在serverfault上的问题:因为你安装的是独立版本的Mercurial,所以你需要把任何被hooks访问的包放到Mercurial的库文件夹里(如果有的话,也可能是“library.zip”)。

我建议你卸载这个独立版本的Mercurial,改为用pip来安装Mercurial。这样更新会更方便,而且你可以把普通的Python库和hg hooks都放在你常用的“site-packages”目录里。

撰写回答