我在我的包pyirt中使用了cython ,但是当我将它发布到pypi时,.pyx文件不包含在tar.gz中
我认为它必须与安装文件有关.但是,我找不到解决这个问题的方法.
我目前正在开发一个使用cython和的python包,numpy并且我希望使用pip install干净的python安装中的命令来安装包.应自动安装所有依赖项.我正在使用setuptools以下内容setup.py:
import setuptools
my_c_lib_ext = setuptools.Extension(
name="my_c_lib",
sources=["my_c_lib/some_file.pyx"]
)
setuptools.setup(
name="my_lib",
version="0.0.1",
author="Me",
author_email="me@myself.com",
description="Some python library",
packages=["my_lib"],
ext_modules=[my_c_lib_ext],
setup_requires=["cython >= 0.29"],
install_requires=["numpy >= 1.15"],
classifiers=[
"Programming Language :: Python :: 3",
"Operating System :: OS Independent"
]
)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一点很有效.该pip install命令下载cython了该构建,并能够构建我的包并与其一起安装numpy.
现在我想提高cython代码的性能,这会导致我的代码发生一些变化setup.py.我需要添加include_dirs=[numpy.get_include()]调用setuptools.Extension(...)或setuptools.setup(...)哪些意味着我还需要import numpy.(请参阅http://docs.cython.org/en/latest/src/tutorial/numpy.html并让distutils在正确的位置查找numpy头文件.)
这是不好的.现在用户无法pip install从干净的环境中调用,因为 …
我有一个名为pytools的 python 包。它包含一个基于 cython 的子模块nms。
当我用 安装根包 pytools 时sudo python -H setup.py,根包似乎安装正确。
但是安装没有复制编译nms.so到/usr/local/lib/python2.7/dist-packages/pytools/nms/.
而当我在 ipython 中导入 pytools 时,遇到了一个错误:
导入错误:无法导入名称 nms
如果我手动复制pytools/nms/nms.so到/usr/local/lib/python2.7/dist-packages/pytools/nms/,问题就解决了。
这是我setup.py的根包:
import os
import numpy
from distutils.core import setup, Extension
from Cython.Build import cythonize
exec(open('pytools/version.py').read())
exts = [Extension(name='nms',
sources=["_nms.pyx", "nms.c"],
include_dirs=[numpy.get_include()])
]
setup(name='pytools',
version=__version__,
description='python tools',
url='http://kaiz.xyz/pytools',
author_email='zhaok1206@gmail.com',
license='MIT',
packages=['pytools', 'pytools.nms'],
#packages=['pytools'],
zip_safe=False
)
Run Code Online (Sandbox Code Playgroud)
和setup.py子包nms:
from distutils.core import setup, …Run Code Online (Sandbox Code Playgroud)