.py源码转换成.pyd通过cpython(win7_64_python35环境)

环境配置

安装Visual C++ Build Tools 2015

因为是cython支持python35,根据cython的wiki显示需要安装vc++库:
https://github.com/cython/cython/wiki/CythonExtensionsOnWindows
但是上面说的离线ISO库我并没有安装成功,默认下载的是32位,并且不能选择,后根据微软官方对于python3.5之后的支持是需要下载Visual C++ Build Tools 2015,官方下载地址:
http://go.microsoft.com/fwlink/?LinkId=691126
官方解释:https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/#comments
《.py源码转换成.pyd通过cpython(win7_64_python35环境)》
如果提示需要.net4.5.1那就去微软官网下载个,要保证是64位的。
安装这个要确保先删除干净电脑的c++环境。
安装的时候我选的是自定义安装,然后去掉了win10的支持,其他的都选中了。安装之后并不需要重启,只需要重新打开cmd窗口即可。
《.py源码转换成.pyd通过cpython(win7_64_python35环境)》

安装cython

pip install cython

如果安装没提示错误信息说明,上一步环境正确,并且cython安装正确。

安装easycython

试了一些方法和库,这个最方便只要一行代码就可以搞定。
https://github.com/cjrh/easycython

pip install easycython

这个模块也会自动安装依赖的cython,如果上步安装cython失败,也可以直接尝试安装easycython来试。

转换步骤

将.py文件重命名为.pyx
运行命令

easycython *.pyx

上面会将当前文件夹下所有的.pyx文件生成为.pyd
如果只生成单个的main.pyx
main.pyx内容:

def test(): print('Hello sanfenzui!')

开始生成:

easycython main.pyx

生成文件main.cp35-win_amd64.pyd
手动将其重命名为main.pyd
注意:这里重命名时去掉“.cp35-win_amd64”不要更改前面的名字,否则不能正常引用
然后python环境下
import main #保证当前文件夹下没有main.py或者mian.pyc
main.test()
就会输出欢迎信息了。
《.py源码转换成.pyd通过cpython(win7_64_python35环境)》

遇到的问题

  1. ERROR:root:No valid source filenames were supplied.
    出现这个是使用
  2. running build_ext building ‘example’ extension error: [WinError 2] 系统找不到指定的文件。

解决办法

  1. 卸载所有的vc++的电脑上所有的版本(坑爹的就是一些游戏会给你自动安装各个版本)
  2. 卸载cython和easycython
pip uninstall cython
pip uninstall easycython
  1. 安装上面的Visual C++ Build Tools 2015
  2. 安装cython和easycython
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注