如http://bugs.python.org/issue22139所述,python27.dll被安装在Windows系统(例如我的情况下是C:\Windows\System32)文件夹中。
但我想知道为什么?为什么它不被安装在python.exe旁边,例如C:\Python27\?
我提出这个问题的原因是:我用python编写了一个mercurial钩子,我们的开发人员需要使用它来检查提交消息是否有效。它检查是否存在有效的JIRA问题编号等内容。为了防止所有开发人员都要自己安装python并手动安装所需模块(工作量很大且容易出错),我将python安装程序压缩并要求开发人员在本地解压缩。但是他们无法运行它,因为缺少python27.dll,或者更糟糕的是,他们已经安装了另一个次要版本的python,并且由于使用了错误的python27.dll而导致钩子失败。令人困惑。
如果我只是将python27.dll(正确的版本)添加到zip文件中,似乎一切都很好。那么,为什么不首先将其安装在那个位置?将其安装在C:\Windows\System32的优点是什么?
希望有人能向我解释一下!
提前感谢, Tallandtree。
但我想知道为什么?为什么它不被安装在python.exe旁边,例如C:\Python27\?
我提出这个问题的原因是:我用python编写了一个mercurial钩子,我们的开发人员需要使用它来检查提交消息是否有效。它检查是否存在有效的JIRA问题编号等内容。为了防止所有开发人员都要自己安装python并手动安装所需模块(工作量很大且容易出错),我将python安装程序压缩并要求开发人员在本地解压缩。但是他们无法运行它,因为缺少python27.dll,或者更糟糕的是,他们已经安装了另一个次要版本的python,并且由于使用了错误的python27.dll而导致钩子失败。令人困惑。
如果我只是将python27.dll(正确的版本)添加到zip文件中,似乎一切都很好。那么,为什么不首先将其安装在那个位置?将其安装在C:\Windows\System32的优点是什么?
希望有人能向我解释一下!
提前感谢, Tallandtree。
python.exe
所在的目录中。我刚刚检查了我的一个虚拟环境 - 这个dll也不在环境中,因此两个2.7.x版本的virtualenv
可能会有同样的问题。 - tdelaneypython.exe
的路径。我能想到的将其放入\windows\system32
的唯一原因是其他程序可以直接使用该dll
。 - tdelaney%ProgramFiles%
,这里有安全的ACLs,相比于使用C:\Python35
。但我真的怀疑System32
是出于安全考虑而被使用的,而是为了让嵌入式开发人员更容易地进行隐式链接,他们想要一个“系统”Python,即不必在注册表中查找路径来调用每个函数的LoadLibrary
和GetProcAddress
。 - Eryk Sun