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

时间:2011-01-12 23:19:09

标签: python windows

继续在ServerFault上研究这个问题的解决方案:

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

我发现了一个有趣且有点令人不安的事情:我的机器上似乎有三个不同版本的Python(如果算上“官方”版本,那么就有四个版本似乎没有带有它的DLL ......)。这是我文件搜索工具的镜头:

alt text

更多信息:

  • 我正在运行Windows 7 64位
  • TortoiseHG和Mercurial目录都在我的路径上,首先列出了Mercurial目录。
  • 我在c:\ Python26
  • 中安装了Python 2.6
  • 我没有任何类型的基于PYTHON的环境变量的条目。 (我应该吗?)

我怀疑这是上述问题中我的问题的根源,但我想我会在这里问,因为这是特别的问题是Python的交易。

我试图互相替换这两个DLL,但是当我使用Mercurial附带的DLL时,TortoiseHg就会停止工作。

在我看来,我的机器上应该只有一个“Python”。我如何实现这一目标?

5 个答案:

答案 0 :(得分:2)

对于前面提到的问题,mercurial包安装在mercurial home下的python中,但是你正在C:\ python26下执行脚本。所以你需要在mercurial python

下安装和执行你的脚本

正如前面提到的那样,在同一台机器上安装多个python家庭是完全可以的,但是你在安装python库时要注意确保你在正确的家中,这意味着你在调用python之前设置了正确的路径。

答案 1 :(得分:1)

我认为tortoise / mercurial刚刚嵌入了他们自己的python版本来做他们需要做的事情。

我不担心它,DLL不会互相攻击 - PATH是Windows搜索查找DLL的最后一个。

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

答案 2 :(得分:1)

附注:“C:\ Python26”中的Python安装将其DLL安装到Windows目录,在您的情况下为“C:\ Windows \ SysWOW64”。

回答您的服务器故障问题:当您将Mercurial安装为独立版本时,您必须将钩子访问的任何软件包放入Mercurial的库文件夹(如果有的话,也可以是“library.zip”)。 / p>

我建议您卸载Mercurial独立版本,然后使用pip安装Mercurial。这使得更新变得更容易,您可以将普通的“site-packages”目录用于普通的Python库和hg钩子。

答案 3 :(得分:0)

每个DLL都适用于该应用程序。您的搜索路径中只有一个,因此您无需担心冲突。

是不是有效的东西会让你担心这个?

您认为应该只有一个是错误的,每个应用程序都捆绑了一个具有固定API的特定版本,您不能只是放弃另一个并希望它能够正常工作。

答案 4 :(得分:0)

Python DLL命名结构仅提供主要版本和修订号。您可能正在查看版本2.6.1,2.6.4,2.6.5和2.6.6的DLL。

只要每个应用程序都包含自己的python26.dll副本,所有这一切都无关紧要。如果存在文件的本地副本,Windows将不会浏览PATH环境变量。