goo*_*ofd 2 python cython python-2.7 cythonize
我有一个test包含敏感代码的小辅助函数。为了屏蔽此代码,我hello.pyx在包中编写并使用了该函数mypackage。
我可以通过将setup.pyfor 包修改为以下内容来构建和使用它:
import os
from setuptools import setup, find_packages
from Cython.Build import cythonize
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name='mypackage',
ext_modules = cythonize('mypackage/hello.pyx'),
packages=find_packages(),
include_package_data=True,
)
Run Code Online (Sandbox Code Playgroud)
但是,当我通过python setup.pyor构建/安装它时pip install,生成的 cythonhello.c以及hello.so被放置在安装目录中(在我的情况下~/.local/python2.7/site-packages/mypackage/)
我可以hello.c从安装目录中手动删除(只留下hello.so文件)并且包运行良好。
有没有办法可以自动化这个过程,这样我就不需要手动删除编译的c文件?
我看着这个stackoverflow 问题。但是,当我尝试使用pip wheel .. 另外,就我而言,只要安装的代码不包含纯文本文件,我就可以使用 tar.gz 进行安装hello.c
[编辑]
我能够.c通过include_package_data=False在我的setup.py.. 中使用来停止将文件放入安装目录
你打算如何分发包?
如果没有可分发源中的.c文件,Cython 将成为您项目的依赖项。由于 Cython 是一个静态代码生成器,生成文件后就不需要了.c。
通过将它们包含在您的源代码分发中,可以通过在.c文件上使用标准 setuptools 扩展而不是在.pyx文件上使用 cythonize来安装包,而无需安装Cython 。
这也是Cython 文档中的建议,它展示了如何在两者之间切换以进行开发和分发。
如果您真的想排除它们并使 Cython 成为依赖项,请将以下内容添加到 MANIFEST.in
exclude mypackage/*.c
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |