【问题标题】:Cython bdist_egg with setuptools creates invalid package带有 setuptools 的 Cython bdist_egg 创建无效包
【发布时间】:2018-05-11 17:54:12
【问题描述】:

我正在尝试编译 *.pyx 文件。它在同一目录中的__init__.py 中使用了一些定义和常量。项目结构为:

setup.py
Foo/__init__.py
Foo/Foo.pyx

设置命令如下:

from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy

setup(
    cmdclass = {'build_ext': build_ext},
    ext_module = [ Extension(name='Foo', sources=['Foo/Foo.pyx']) ],
    include_dirs=[numpy.get_include()],
    name='Foo',
    packages=['Foo'],
    zip_safe=True
)

在构建和部署 egg 时会出现问题。生成的鸡蛋具有以下结构:

Foo.so                  
Foo.py                  
Foo/__init__.py      

现在,Foo.py 包含一些基本导入 *.so 文件的动态导入代码。然而,由于Foo/__init__.py 的存在,import Foo 尝试仅从__init__.py 导入符号,其中仅包含一些常量(所有相关代码实际上都在Foo.so 中)。

我通过将__init__.py 中的所有定义粘贴到Foo.pyx 中解决了这个问题,但我正在尝试找出合适的解决方案。

感谢任何建议!

【问题讨论】:

    标签: python cython setuptools


    【解决方案1】:

    我将我的问题归结为 setup() 命令的一个无关参数。从https://docs.python.org/2/distutils/setupscript.html 的文档来看,我不需要packages=['Foo'] 参数,事实上,这就是导致它创建内部Foo 包的原因,这一切都搞砸了。

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 2018-09-26
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多