0

我知道有人问过类似的问题,但没有一个解决方案对我有用/我得到不同的错误。我正在尝试使用 Python 2.7 在 64 位 Windows 7 VM 上安装 PyUSB。

当我从命令行运行安装时,出现错误:无法找到 vcvarsall.bat。当我尝试运行已编译的可执行文件进行安装时,我收到一条错误消息,提示在注册表中找不到 Python 2.7。

对此的任何帮助将不胜感激。

4

1 回答 1

0

如果您尚未安装 VS 2008,请不要安装。

如果您已经安装了 VS 2008 并且无法获得要编译的扩展,我将卸载 VS 2008 并在程序文件下删除它的目录。问题很可能是 express 版本不附带 64 位编译器。

要获得编译扩展文件,请从 http://www.microsoft.com/en-gb/download/details.aspx?id=44266安装适用于 Windows 的 Python 2.7 编译器 说明说需要 setuptools 6.0 但我不能即使在更新后也能正常工作。

安装编译器后,找到包含 vcvarsall.bat 的目录。对我来说是

C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

在那里打开powershell并运行.\vcvarsall.bat amd64

如果你看到这个:

PS C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0> .\vcvarsall.bat amd64
Setting environment for using Microsoft Visual Studio 2008 x64 tools.

一切都很好。

下一步很奇怪,但必不可少,最后会解释。将目录 9.0 重命名为 VC。

添加环境变量 VS90COMNTOOLS 并将值设置为 bin 目录的路径,现在应该是:C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\VC\VC\bin

现在它应该一切正常。去在扩展文件上测试它:

python setup.py build_ext --inplace

9.0为什么要重命名为VC?进入你的python安装目录,找到distutils目录:python_base_dir\Lib\distutils

在您选择的文本编辑器中打开 msvc9compiler.py 并找到第 247 行。

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

这意味着 distutils 将简单地导航到您添加的环境变量,上两层然后下到 VC 文件,希望找到 vcvarsall.bat。

您可以编辑此文件作为重命名 9.0 -> VC 的替代方法,但我认为那是“更脏的”。

另请注意,不需要 VS 2008 目录的原因是第 242 行:

if not productdir or not os.path.isdir(productdir):

如果目录被删除,它将忽略 VS 2008 的旧注册表项。

于 2015-02-13T12:55:41.300 回答