如何配置 python cffi 库以使用 mingw?
Posted
技术标签:
【中文标题】如何配置 python cffi 库以使用 mingw?【英文标题】:How to configure python cffi library to use mingw? 【发布时间】:2013-05-23 03:56:58 【问题描述】:尝试在 windows 上调用 cffi.FFI.verify() 会产生这个错误:
distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat
我想用mingw来编译而不是msvc。我试图通过创建 c:\Python27\Lib\distutils\distutils.cfg 来让 distutils 使用 mingw
[build]
compiler = mingw32
但这似乎不影响 cffi,我仍然得到 vcvarsall.bat 丢失错误。
那么我怎样才能让 cffi 使用 gcc/mingw(或一般其他 C 编译器)?
【问题讨论】:
在命令提示符中返回gcc --version
是什么? MinGW/bin
的路径是否在您的 PATH
环境中正确设置。变种。 ?
是的。我可以从我想运行 python 脚本的同一个 cmd 提示符调用 gcc (GCC) 4.7.2。 Windows 路径包含 MinGW/bin 目录
【参考方案1】:
尝试重新安装 cffi,现在 distutils 已正确配置。
例如使用easy_install
easy_install cffi
或者甚至使用 MinGW 从源代码重建和安装它:
cd cffi-src-dir
python setup.py config --compiler=mingw32 build --compiler=mingw32 install
cd ..
这将确保 cffi 正确设置以与 MinGW 一起使用...我猜...
【讨论】:
好吧,首先使用 pip 或 easy_install 失败,出现 distutils 错误,抱怨“-mno-cygwin”参数错误。在我从 distutils/cygwincompiler.py 中删除所述编译器参数后(根据这个问题bugs.python.org/issue12641),编译开始但在其他 gcc 错误中停止。我暂时放弃。 从源代码编译没有帮助,因为 setup.py 使用 distutils,因此您会遇到与 pip 或 easy_install 完全相同的问题。顺便说一句,最初我使用来自lfd.uci.edu/~gohlke/pythonlibs 的非官方二进制文件安装了 cffi。如果您只使用 ABI,它就可以工作,但是当尝试使用 API(并因此编译 C)时,它会失败,如我原来的问题中所述以上是关于如何配置 python cffi 库以使用 mingw?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CFFI 将包含其标头的 C 库包装到 python 程序中?
在 Python CFFI 中声明包含 time_t 字段的结构