gpt4 book ai didi

python - 使用 ms 编译器在 Windows 上构建 python 模块

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:27 25 4
gpt4 key购买 nike

我正在尝试在 PC\example_nt 下构建 python 源代码发行版附带的示例

我将 example.c 和 setup.py 复制到目录 C:\mymod

当我运行 C:\Python27\python.exe setup.py install 时,出现错误......

错误:无法找到 vcvarsall.bat

我在 distutils 中做了一些挖掘,发现它正在追随 microsoft Visual Studio 的版本 9,但我只有版本 8。显然它试图获得版本 9,因为 C:\Python27 下的 python 是用什么编译的.

我修改了 setup.py 并将以下内容放在最顶部。

from distutils import msvc9compiler
msvc9compiler.VERSION = 8.0

完成此操作后,我能够编译并得到以下内容......

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

现在,当我运行 C:\Python27\python.exe 并尝试导入示例时,我得到以下信息...

ImportError: DLL load failed: The specified module could not be found.

我做错了什么吗? VS8 不支持创建 Python 2.7 模块吗?我该怎么办?

最终我需要为一些 Windows C 库构建绑定(bind),以便我可以使用 Python 来扩展一些专有程序而不是 C。我必须使用 VS8 来创建 C 扩展。那么我该怎么办呢?

请多多指教。

谢谢,〜埃里克

最佳答案

一般来说,您必须使用与构建 python 相同版本的 VS 来构建 python 模块。您有多种选择:

  1. 使用Python2.6,我认为是VS8(或者更早的版本,我确信2.5和2.6之间有变化)
  2. 使用 VS9。我认为你不能,因为你使用的专有库是用 VS8 构建的。与 python 实际发生的问题相同。
  3. 使用 ctypes 创建您的绑定(bind)。这可能很困难,而且很容易使您的程序崩溃。
  4. 使用 VS8 从源代码构建 Python2.7。如果您由于某种原因无法使用 Python2.6,那么这可能是最好的选择。

如果可行,我会推荐选项 1。

关于python - 使用 ms 编译器在 Windows 上构建 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4218613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com