【问题标题】:How to configure python cffi library to use mingw?如何配置 python cffi 库以使用 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 目录

标签: python mingw python-cffi


【解决方案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)时,它会失败,如我原来的问题中所述
猜你喜欢
  • 1970-01-01
  • 2013-02-14
  • 2016-12-23
  • 2016-04-16
  • 1970-01-01
  • 2015-03-25
  • 2015-11-19
  • 2014-09-16
  • 2021-03-22
相关资源
最近更新 更多