首页 > 解决方案 > setup.py - 复制命名空间目录中的外部文件

问题描述

我想安装一个具有以下结构的包:

├── nsp
│   ├── __init__.pxd
│   └── A
|       ├── b.py
|       ├── extension.pxd
|       ├── extension.pyx
│       └── __init__.py
└── setup.py

nsp是一个命名空间包。(动机:见这里

我的设置脚本如下所示:

from setuptools import setup
from setuptools.extension import Extension

# factory function
def my_build_ext(pars):
    # import delayed:
    from setuptools.command.build_ext import build_ext as _build_ext

    # include_dirs adjusted: 
    class build_ext(_build_ext):
        def finalize_options(self):
            _build_ext.finalize_options(self)
            # Prevent numpy from thinking it is still in its setup process:
            __builtins__.__NUMPY_SETUP__ = False
            import numpy
            self.include_dirs.append(numpy.get_include())

    #object returned:
    return build_ext(pars)

extensions = [Extension(nsp.A.extension, ['nsp/A/extension.cpp'])]

setup(
    cmdclass={'build_ext' : my_build_ext},
    setup_requires=['numpy'],
    install_requires=['numpy'], 
    packages=['nsp.A'],
    ext_modules=extensions
    package_data={
        '': ['*.pxd', '*.pyx']
    },
)

根据我目前的理解,package_data描述了所有应该包含的非python文件。我希望在安装目录中重建上面给出的确切文件树。然而不幸的是,__init__.pxd没有被复制。我怎么能做到这一点?

我正在 Windows 10 x64 上使用 Python 3.7。

标签: pythondeploymentcythonsetup.py

解决方案


推荐阅读