【发布时间】:2017-07-25 22:00:55
【问题描述】:
我有一个包含敏感代码的小辅助函数test。为了屏蔽这段代码,我在hello.pyx 中编写了函数,并在我的包mypackage 中使用它。
我可以通过将包的setup.py 修改为如下内容来构建和使用它:
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,
)
但是,当我通过python setup.py 或pip install 构建/安装它时,cython 生成的hello.c 以及hello.so 被放置在安装目录中(在我的情况下为~/.local/python2.7/site-packages/mypackage/)
我可以手动从安装目录中删除hello.c(只留下hello.so 文件)并且包运行良好。
有没有办法可以自动化这个过程,这样我就不需要手动删除编译的c 文件?
我看了这个stackoverflow question。但是,当我尝试使用 pip wheel . 构建轮子时,在 cythonize 操作期间出现错误。另外,在我的情况下,只要安装的代码不包含hello.c的纯文本文件,我就可以使用 tar.gz 进行安装@
[编辑]
通过在我的setup.py 中使用include_package_data=False,我能够停止在安装目录中放置.c 文件。但是,我不确定此选项是否适用于项目中的非python 文件
【问题讨论】:
-
你的项目目录中有
MANIFEST.in吗?如果是,它包含什么? -
没有
MANIFEST.in..顺便说一句刚刚更新了问题
标签: python python-2.7 cython cythonize