python setuptools:如何安装带有 cython 子模块的包?

2023-12-07

我有一个名为的 python 包pytools。 它包含一个基于 cython 的子模块nms.

当我安装根包 pytools 时sudo python -H setup.py, 根包似乎已正确安装。

但安装时没有复制编译nms.so to /usr/local/lib/python2.7/dist-packages/pytools/nms/.

当我在 ipython 中导入 pytools 时,遇到错误:

导入错误:无法导入名称 nms

如果我手动复制pytools/nms/nms.so to /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='[email protected]',
  license='MIT',
  packages=['pytools', 'pytools.nms'],
  #packages=['pytools'],
  zip_safe=False
)

And setup.py子包的nms:

from distutils.core import setup, Extension
import numpy
from Cython.Distutils import build_ext
setup(
    cmdclass={'build_ext': build_ext},
    ext_modules=[Extension("nms",
    sources=["_nms.pyx", "nms.c"],
    include_dirs=[numpy.get_include()])],
)

看来这是一个重复的问题尝试构建 python 包的 cython 扩展,而不是创建共享对象(.so)文件,但我还是想把它贴在这里,因为那里没有太多讨论。

谢谢你!


您不需要子包中的安装脚本。只需在根设置脚本中构建扩展即可:

exts = [Extension(name='pytools.nms',
                  sources=["pytools/nms/_nms.pyx", "pytools/nms/nms.c"],
                  include_dirs=[numpy.get_include()])]

setup(
    ...
    packages=['pytools'],
    ext_modules=cythonize(exts)
)

请注意,我将 cythonized 扩展包装在cythonize()并使用完整的模块名称+扩展源的完整路径。另外,自从nms是一个模块pytools包,包括pytools.nms in packages没有影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python setuptools:如何安装带有 cython 子模块的包? 的相关文章

随机推荐

  • 设置“可见性”后未获取“RelativeLayout get Height()”

    我想要的是 当我单击仪表板按钮时 它将像滑动抽屉一样打开 打开后再次单击它 它将关闭 我使用这个自定义抽屉是因为 SlidingDrawer 已弃用 现在的问题是 它工作正常 除了第一次单击按钮时 它会打开得非常快 没有任何动画 但会正常关
  • 有没有办法在Python Selenium中通过属性查找元素?

    我得到了这样的 html 片段
  • 使用 WMI 和 C# 的 CPU 使用率

    如何使用 WMI 在 C 中检索当前 CPU 使用情况 我看过很多使用性能计数器的帖子 但我需要一个可以与远程计算机一起使用的解决方案 我还找到了一个VB解决方案here 但如果可能的话 我更愿意在 C 中完成此任务 至少可以说 WMI 的
  • Rust 不接收来自 C++ 的 UDP 消息

    我正在使用 UDP 创建服务器 客户端范例 但 Rust 服务器未接收 C 客户端消息 我已经能够成功地进行 Rust 服务器 Rust 客户端和 C 服务器 Rust 客户端通信 这让我相信我的 C 代码存在问题 或者在将 C 缓冲区发送
  • 为什么 x86-64 汇编中参数存储在寄存器中而不是堆栈中?

    在 x86 32 汇编中 参数存储在堆栈中 但在 x86 64 中 参数存储在寄存器中 这是什么原因呢 访问 CPU 寄存器比访问 RAM 快得多 由于 64 位 CPU 有更多通用寄存器 与 64 位无关 只是因为它们更新 更大 因此使用
  • 如何使用有效的 CSS 来定位 IE7 和 IE8?

    我想使用符合 W3C 的 CSS 来定位 IE7 和 IE8 有时修复一个版本的 CSS 并不能修复另一个版本的 CSS 我怎样才能实现这个目标 使用 HTML 和 CSS 明确定位 IE 版本 无需破解 如果您不想对 CSS 进行修改 请
  • 构建Word字段

    除了将文本插入和解析到空白 Word 字段之外 是否有任何方法可以使用 VBA 以编程方式将用户定义的字段和字段代码构建到我自己的模板中 此外 有没有办法让这些字段显示在可用字段列表中 我最近开发了一个使用 Word 的 MACROBUTT
  • 使用后台线程从 url 加载注释。移动或缩放地图视图之前不会显示图钉

    我使用后台线程从 url 加载注释 在移动或缩放地图视图之前 图钉不会显示 我如何更新我的视图 我的观点确实出现了 void viewDidAppear BOOL animated super viewDidAppear animated
  • static const int 和 static int const 有什么区别?

    In this answer使用的OP static int const var 5 在条件编译控制的上下文中 使用之间有区别吗static const int and static int const 例如 static const in
  • 检测 pygtk 中的 ctrl+click 按钮

    我想检测当用户单击按钮时是否按住 ctrl 点击 信号似乎没有向回调传递足够的信息来解决这个问题 如果您可以连接到button press event or button release event代替clicked the event传递
  • Android 对位图的噪点效果

    我正在编写一些函数来在位图上添加噪点效果 我发现类似的问题 向绘图添加噪点效果 位图输出Bitmap Bitmap createBitmap bitmap getWidth bitmap getHeight Bitmap Config AR
  • 反转字符串时间和空间复杂度

    我编写了不同的 python 代码来反转给定的字符串 但是 无法确定其中哪一个是有效的 有人可以指出这些算法在时间和空间复杂度上的差异吗 def reverse 1 s result for i in s result i result r
  • Rails 视图下拉列表中的日期格式

    我可以帮助您格式化视图中下拉列表中的日期字段 我的日期显示带有时间戳 我希望它们显示为 mm dd yyyy 在我的模型中 我有一个从表中选择日期字段的方法 def self get event dates event dates Ugra
  • 使用 mutate 和 for 循环(按变量名前缀)对多组变量进行 R rowSums

    我有多个变量按前缀 par fri gp 等 分组在一起 其中有 29 个组 每个变量的值为 0 或 1 我需要做的是对这些组 即 partner 1 Partner 2 等 求和 如果 rowSums 0 则使每个变量为 NA 例如 我的
  • 风险管理:如果已经做多,则不要下新订单

    如果该标志已经指示长 则不应有新的指示长的标志 如果标志不指示长计算表达式 longCondition if strategy long false rsi lt 30 and close gt moving avg shortCondit
  • 如何在 Cocoa OpenGL 程序中显示原始 YUV 帧

    我被分配的任务是编写一个程序 该程序获取示例原始 YUV 文件并将其显示在 Cocoa OpenGL 程序中 我是一名实习生 我几乎不知道如何开始 我一直在阅读维基百科和有关 YUV 的文章 但我找不到任何关于如何打开原始 YUV 文件 提
  • Xcode iOS:检查用户是否已登录,如果未登录则显示不同的视图

    我正在编写一个应用程序 其中登录用户比未登录用户拥有一些额外的功能 基本上 我或多或少有 5 个选项卡 当我启动应用程序时 用户立即获得登录页面 他可以决定跳过它 如果他跳过它 他就只有 3 个选项卡 如果他登录成功的话 就会有5个 我已经
  • 存储/分配经过身份验证的用户的角色

    我正在升级站点以使用 MVC 并且正在寻找设置身份验证的最佳方法 此时 我可以通过 Active Directory 进行登录 验证用户名和密码 然后设置身份验证 cookie 如何在登录时存储用户的角色信息 以便我的控制器在用户浏览站点时
  • 使用 Gradle 在 Android 项目中混合 Java+Scala 的最简单方法是什么?

    使用 Gradle 在 Android 项目中混合 Java Scala 的最简单方法是什么 是否使用https github com saturday06 gradle android scala plugin 我问这个是因为例子grad
  • python setuptools:如何安装带有 cython 子模块的包?

    我有一个名为的 python 包pytools 它包含一个基于 cython 的子模块nms 当我安装根包 pytools 时sudo python H setup py 根包似乎已正确安装 但安装时没有复制编译nms so to usr