[英]building a python module on windows using ms compiler
I am trying to build the example that comes with the source distribution of python under PC\\example_nt我正在尝试在PC\\example_nt下构建python的源代码分发附带的示例
I copied example.c and setup.py to a directory C:\\mymod我将 example.c 和 setup.py 复制到目录 C:\\mymod
When I run C:\\Python27\\python.exe setup.py install
I get the error....当我运行
C:\\Python27\\python.exe setup.py install
出现错误....
error: Unable to find vcvarsall.bat
I did some digging around in distutils and saw that it was going after version 9 of microsoft visual studio but I only have version 8. Apparently it tries to get version 9 because of what the python under C:\\Python27 was compiled with.我在 distutils 中进行了一些挖掘,发现它正在使用 microsoft visual studio 的第 9 版,但我只有第 8 版。显然它试图获得第 9 版,因为 C:\\Python27 下的 python 是用什么编译的。
I modified setup.py and put the following at the very top.我修改了 setup.py 并将以下内容放在最顶部。
from distutils import msvc9compiler
msvc9compiler.VERSION = 8.0
After doing this I was able to compile and got the following....这样做之后,我能够编译并得到以下内容....
C:\mymod>C:\Python27\python.exe setup.py install
running install
running build
running build_ext
building 'example' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.exe /c /nologo /Ox /MD /W3
/GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\PC /Tcexample.c /Fobuild\temp.
win32-2.7\Release\example.obj
example.c
creating build\lib.win32-2.7
C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.exe /DLL /nologo /INCREME
NTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild /EXPORT:initexamp
le build\temp.win32-2.7\Release\example.obj /OUT:build\lib.win32-2.7\example.pyd
/IMPLIB:build\temp.win32-2.7\Release\example.lib /MANIFESTFILE:build\temp.win32
-2.7\Release\example.pyd.manifest
Creating library build\temp.win32-2.7\Release\example.lib and object build\te
mp.win32-2.7\Release\example.exp
C:\Program Files\Microsoft Visual Studio 8\VC\BIN\mt.exe -nologo -manifest build
\temp.win32-2.7\Release\example.pyd.manifest -outputresource:build\lib.win32-2.7
\example.pyd;2
running install_lib
copying build\lib.win32-2.7\example.pyd -> C:\Python27\Lib\site-packages
running install_egg_info
Removing C:\Python27\Lib\site-packages\example-1.0-py2.7.egg-info
Writing C:\Python27\Lib\site-packages\example-1.0-py2.7.egg-info
Now when I run C:\\Python27\\python.exe and try to import example
I get the following...现在,当我运行 C:\\Python27\\python.exe 并尝试
import example
我得到以下信息...
ImportError: DLL load failed: The specified module could not be found.
Did I do something wrong?我做错什么了吗? Is VS8 unsupported for creating Python 2.7 modules?
VS8 不支持创建 Python 2.7 模块吗? What should I do?
我该怎么办?
Ultimately I need to build bindings for some Windows C library so that I can use Python to extend some proprietary program instead of C. I have to use VS8 for creating the C extension.最终我需要为一些 Windows C 库构建绑定,以便我可以使用 Python 来扩展一些专有程序而不是 C。我必须使用 VS8 来创建 C 扩展。 So where does that leave me.
那么这让我在哪里。
Advice please.请指教。
Thanks, ~Eric谢谢,〜埃里克
Generally speaking you have to build the python modules using the same version of VS as python was built with.一般来说,您必须使用与构建 python 相同的 VS 版本来构建 python 模块。 You have several options:
您有多种选择:
I'd recommend option 1 if it works.如果可行,我会推荐选项 1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.