pyusb 2.7 windows install error

微笑、不失礼 提交于 2019-12-18 09:45:15

问题


I know similar things have been asked, but none of the solutions work for me/I get different errors. I am trying to install PyUSB on a 64-bit Windows 7 VM, with Python 2.7.

When I run the install from command line, i get error: Unable to find vcvarsall.bat. When I try to run the compiled executable to install, I get an error saying Python 2.7 was not found in the registry.

Any help with this would be greatly appreciated.


回答1:


If you haven't installed VS 2008, don't.

If you have installed VS 2008 and can't get extensions to compile, I would uninstall VS 2008 and remove the directory for it under program files. The problem is likely to be that the express version doesn't ship with the 64-bit compilers.

To get compiling extension files, install the Python 2.7 compilers for Windows from http://www.microsoft.com/en-gb/download/details.aspx?id=44266 The instructions say that setuptools 6.0 is needed but I couldn't get it to work even after updating.

Once the compilers are installed, locate the directory containing vcvarsall.bat. For me it was

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

Open powershell there and run .\vcvarsall.bat amd64

If you see this:

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.

All is well.

The next step is bizarre but essential and is explained at the end. Rename the directory 9.0 to VC.

Add the environment variable VS90COMNTOOLS and set the value to be the path of your bin directory, which should now be: C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\VC\VC\bin

Now it should all work. Go and test it on an extension file:

python setup.py build_ext --inplace

Why the renaming of 9.0 to VC? Go to your python installation directory and find the distutils directory: python_base_dir\Lib\distutils

Open up msvc9compiler.py in your text editor of choice and find line 247.

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

This means that distutils will simply navigate to the environment var you added, go up two levels and then down into the VC file, hoping to find vcvarsall.bat.

You can edit this file as an alternative to renaming 9.0 -> VC but I thought that was "dirtier".

Also note the reason there needs to be no VS 2008 directory is line 242:

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

which ignores old registry entries for VS 2008 if the directory is removed.



来源:https://stackoverflow.com/questions/18304569/pyusb-2-7-windows-install-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!