python编译 pyd 工具_使用Python setuptools将Cython编译的pyd文件放在原始文件夹中?...

我正在尝试为包含Cython模块的

Python 3.4应用程序构建setup.py包.我的计划是有一个setup.py文件需要Cython并编译.pyx文件的想法通常我会在Win32(x86& x64)和Mac上运行它,然后生成平台轮并将它们上传到PyPI,所以普通用户不需要Cython或编译任何东西.

目前我可以获取setup.py脚本来构建.pyd文件,但是它不会将构建的.pyd文件放在与原始.pyx文件相同的位置,这是我需要它的地方.

我尝试手动复制.pyd文件,但是当我通过bdist_wheel生成轮子时,我得到一个纯Python轮,我认为是错误的,因为根据平台,我的内置.pyx文件有不同版本.我还尝试了子类化Distribution类并强制is_pure()返回False(如here in the Building Wheels section所述),但这不起作用. (仍然生成纯Python轮.)

我假设如果我可以获得setup.py脚本将编译后的文件放在正确的位置,那么轮子将不是纯Python,一切都会好的.

所以我的问题是:

> setup.py中是否有某种设置告诉它将已编译的Cython文件放入与源文件相同的位置?

>或者有没有办法将编译后的文件复制到我需要它们的位置但是仍然可以将轮子构建为非纯粹的?

>或者我是以错误的方式解决这个问题.我应该更改我的Python代码以从其他地方提取已编译的包吗? (这对我来说似乎不对.)

> [编辑]或者我应该将已编译的二进制文件.pyd / .so / .dylib放入包中,添加逻辑以在运行时基于体系结构获得正确的.pyd,然后使用纯Python轮? (这对我来说也不合适.)

有关我的设置的更多信息:

我在setup.py脚本中使用setuptools(而不是distutils).我的setup.py的片段在这里(删除了很​​多东西以保持相关的东西):

from setuptools import setup, Extension

from Cython.Build import cythonize

from Cython.Distutils import build_ext

...

extensions = [

Extension(name='audio_interface',

sources=['mpf/mc/core/audio/audio_interface.pyx'],

include_dirs=include_dirs,

library_dirs=library_dirs,

libraries=libraries,

extra_objects=extra_objects,

extra_compile_args=extra_compile_args,

extra_link_args=extra_link_args),

...

setup(

...

ext_modules=cythonize(extensions),

cmdclass= {'build_ext': build_ext},

...

谢谢!

布赖恩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值