使用 python 模块分发预构建的库

2023-12-04

我使用以下脚本来分发包含纯 python 代码的模块。

from distutils.core import setup, Extension
import os
setup (name = 'mtester',
       version = '0.1',
       description = 'Python wrapper for libmtester',
       packages=['mtester'],
       package_dir={'mtester':'module'},
       )

我遇到的问题是,我修改了使用外部库的文件之一(.so 文件),我需要将其与现有模块一起发送。建议我使用 package_data 来包含该库。我将脚本修改为以下内容。

from distutils.core import setup, Extension
import os
data_dir = os.path.abspath('../lib64/')
setup (name = 'mtester',
       version = '0.1',
       description = 'Python wrapper for libmtester',
       packages=['mtester'],
       package_dir={'mtester':'module'},
       package_data={'mtester':[data_dir+'mhelper.so']},
       )

问题是,添加 package_data 没有任何区别。这不会将 mhelper.so 安装在任何位置(既不在 site-packages 中,也不在 site-packages/mtester 中)。

系统信息:Fedora 10,64 位,python 2.5(是的,它很古老。但它是我们的构建机器,它需要保持这种方式以保持向后兼容性)

任何可以帮助我解决这个问题的建议将不胜感激!


很遗憾package_data查找相对于包顶部的文件。一种修复方法是将辅助库与其余代码一起移至模块目录下:

% mv lib64/mhelper.so module/

然后修改package_data据此论证:

package_data = {'mtester': ['mhelper.so']}
...

然后测试:

% python setup.py bdist
% tar tf dist/mtester-0.1.linux-x86_64.tar.gz | grep mhelper
./usr/local/lib/python2.5/dist-packages/mtester/mhelper.so
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 模块分发预构建的库 的相关文章

  • 具有多处理功能的 Python 代码无法在 Windows 上运行

    以下简单的绝对初学者代码在 Ubuntu 14 04 Python 2 7 6 和 Cygwin Python 2 7 8 上运行 100 但在 Windows 64 位 Python 2 7 8 上挂起 我使用另一个片段观察到了同样的情况
  • python导入模块时如何避免一直写模块名?

    我用math最近模块很多 我不想写math sqrt x and math sin x 每时每刻 我想缩短它并写sqrt x and sin x How 对于较长的模块名称 通常会缩短它们 例如 import numpy as np 然后您
  • Python 中的安全解除引用

    Groovy 有一个很好的安全取消引用运算符 这有助于避免 NullPointerExceptions variable method The method仅当以下情况时才会被调用variable is not null 有没有办法在 Py
  • Python的reduce()短路了吗?

    If I do result reduce operator and False 1000 得到第一个结果后它会停止吗 自从False anything False 相似地 result reduce operator or True 10
  • 为什么在 Windows 中使用 GetConsoleScreenBufferInfoEx 时控制台窗口会缩小?

    我正在尝试使用 GetConsoleScreenBufferInfoEx 和 SetConsoleScreenBufferInfoEx 设置 Windows 命令行控制台的背景和前景色 我正在 Python 中使用 wintypes 进行此
  • 为什么导入 pdb 时出现此错误? “模块”对象没有属性“ascii_letters”

    尝试调试我的代码 我正在导入库pdb import sys from subprocess import check call import pdb functions if name main Code 我收到此错误 File reg p
  • 如何从谷歌云存储桶读取音频文件并在datalab笔记本中使用ipd播放

    我想在数据实验室笔记本中播放我从谷歌云存储桶中读取的声音文件 这个怎么做 import numpy as np import IPython display as ipd import librosa import soundfile as
  • Pyspark 数据框逐行空列列表

    我有一个 Spark 数据框 我想创建一个新列 其中包含每行中具有 null 的列名称 例如 原始数据框是 col 1 col 2 col 3 62 45 null 62 49 56 45 null null null null null
  • Python 正则表达式部分匹配或“hitEnd”

    我正在编写一个扫描器 因此我将任意字符串与正则表达式规则列表进行匹配 如果我可以模拟 Java hitEnd 功能 不仅知道正则表达式何时不匹配 还知道何时匹配 这将非常有用 can t匹配 当正则表达式匹配器在决定拒绝输入之前到达输入末尾
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一
  • 错误:无法访问文件“$libdir/plpython2”:没有这样的文件或目录

    我正在运行 postgresql 9 4 PostgreSQL 9 4 4 on x86 64 unknown linux gnu compiled by gcc GCC 4 1 2 20070626 Red Hat 4 1 2 14 64
  • Python 视频框架

    我正在寻找一个 Python 框架 它将使我能够播放视频并在该视频上绘图 用于标记目的 我尝试过 Pyglet 但这似乎效果不是特别好 在现有视频上绘图时 会出现闪烁 即使使用双缓冲和所有这些好东西 而且似乎没有办法在每帧回调期间获取视频中
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • 参数验证,Python 中的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 让我们举一个 API 的例子 def get abs directory self path if os path isdir path ret
  • 如何检查列表是否为空?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 例如 如果通过以下内容 a 我如何检查是否a是空的 if not a print Lis
  • 如何在 Python 中从 HTML 页面中提取 URL [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须用Python 编写一个网络爬
  • 从 IMDbPy 结果中的片目中获取电影 ID

    我正在尝试创建一个数据集 允许我根据 Python IMDb API 中的演员 ID 和电影 ID 加入演员和电影 现在 我正在尝试从演员的电影作品中提取电影 ID 列表 但无法做到 例如 我知道 Rodney Dangerfield 在
  • 如何正确消除字典中的元素直到只剩下一个字符串

    我真的需要这方面的帮助 def get winner dict winner new dict for winner in dict winner first letter winner 0 value dict winner winner
  • 从另一个 python 脚本获取返回信息

    我在 Linux 上 我有一个 python 脚本 我想从另一个 python 脚本调用它 我不想将其作为模块导入 为了一层安全性 现在为了学术练习 因为我想弄清楚这一点 我实际上想让一个脚本使用 os system 或另一个类似的函数 并
  • 最小硬币找零问题——回溯

    我正在尝试用最少数量的硬币解决硬币找零问题 采用回溯法 我实际上已经完成了它 但我想添加一些选项 按其单位打印硬币数量 而不仅仅是总数 这是我下面的Python代码 def minimum coins coin list change mi

随机推荐

  • 如何为我的 git 存储库设置默认别名或其他配置?

    我想为 git 存储库设置一些默认别名和其他配置 以便当新用户克隆它时 他们可以在该项目中立即使用这些别名 即 我想做 git clone
  • 与 cloudFront 中的最小、最大和默认 TTL 混淆

    我的 Web 应用程序位于 S3 中 并使用 cloudFront 的 Web 发行版为该应用程序提供服务 我给了官方文档读过 但对很多术语感到困惑 我的问题 我想将cloudFront缓存设置为最长1年 365天 为此 我需要做什么 我们
  • 扩展 CodeIgniter 中的模型

    好吧 我是 CodeIgniter 框架的新手 我正在尝试构建一个通用模型类 看 class Basic Model extends CI MODEL function construct Call the Model constructo
  • 如何使用 AWS Cognito 限制自定义 api 访问

    我在我的应用程序中使用 Spring Boot 在搜索一些 IAM 工具时 我实际上很喜欢 Auth0 但我负担不起他们的定价 所以 我找到了另一个叫AWS Cognito 下面是Auth0来限制我们自定义的访问api https auth
  • 如何使用 python 从 Azure Cosmos DB 读取数据

    我有一个 Azure 试用帐户 并将一些 JSON 文件上传到 CosmosDB 中 我正在创建一个 python 程序来查看数据 但我在这样做时遇到了困难 这是我到目前为止的代码 import pydocumentdb documents
  • Android Studio Logcat 过滤器不显示

    我在 Ubuntu 13 10 上使用 AndroidStudio 0 4 0 在 0 3 2 上遇到同样的问题 一切都很好 直到我在 Android 和 ddms ddms 视图中丢失了 logcat 过滤实用程序和设备选择侧栏 然而 程
  • Facebook android sdk如何获取给定页面的点赞数

    我想获取给定页面及其 id 的点赞数 这里是图形API请求我想用 facebook android sdk 进行翻译 我不知道如何制作它 如果我尝试 我会收到错误 Bundle params new Bundle params putStr
  • 如何在 Chrome 中播放 .avi 文件格式的视频?

    从技术上讲 可以通过直接在 HTML 中加载外部播放器的嵌入对象来播放 avi 文件 现在铬已弃用该功能和解决方案将我的所有视频文件转码为 mp4 Edited因为我不拥有这些文件 所以我不会假装对它们进行转码 我期待着一种方法来重新启用旧
  • 将坐标外推到画布对象的边缘

    我正在编写一个浏览器应用程序 试图发现图像中的兴趣点 一旦我计算出这些点 我就会在它们之间画一条线 我的应用程序需要将这些线条推断到画布的边缘 有谁有 javascript 中线性图计算的经验吗 我已经进行了演示 function func
  • 以编程方式在闪亮仪表板中切换侧边栏菜单的显示

    我正在使用 R 闪亮仪表板 想知道是否可以使用附加按钮折叠 显示侧边栏 就像侧边栏顶部已有的按钮一样 那可能吗 Cheers 您可以通过以下方式向正文添加 删除所需的 css 类shinyjs library shiny library s
  • pyodbc 在 sp_prepexec 之后调用 sp_unprepare。这会影响参数化查询的性能吗?

    继续 SqlAlchemy pymssql 原始参数化查询会使用相同的执行计划吗 我从 pymssql 切换到 pyodbc 尝试将参数化查询发送到 SQL Server 带有 Microsoft 驱动程序的 pyodbc 可以解决问题 但
  • 操作委托使用在 foreach 循环外部声明的变量的最后一个值[重复]

    这个问题在这里已经有答案了 我有这段代码 int i 0 foreach var tile in lib dic Values var ii i var t tile Button b new Button gt MainStatic ti
  • MySQL 无法存储 UTF8 字符

    找不到我无法在 MySQL 数据库中存储 等字符的原因 我的表定义是 CREATE TABLE IF NOT EXISTS gen admin words translated id int 10 NOT NULL AUTO INCREME
  • 查询Elasticsearch上各类型的最新文档

    我正在尝试在 Elasticsearch 上运行看似简单的查询 但我似乎无法获得我正在寻找的结果 这是我正在尝试做的事情的一个简短示例 我有一个新闻数据库 每条新闻都包含来源 标题 时间戳和用户 我想要获取给定用户的每个可用来源的最后一个
  • 将浮点数转换为位置格式的字符串(没有科学记数法和错误精度)

    我想打印一些浮点数 以便它们始终以十进制形式写入 例如12345000000000000000000 0 or 0 000000000000012345 不在科学计数法 但我希望结果达到 15 7有效数字IEEE 754 双精度 仅此而已
  • 将对象的地址添加到循环向量中

    我需要创建几个对象并将它们放入一个列表中 我正在使用 std vector 另外 我需要列表项指向对象的地址 以便我对对象所做的更改也反映在列表中 但问题是 列表中的每个项目都指向循环中创建的最后一个对象 for int i 0 i lt
  • Netbeans PHP - 添加/删除花括号插件/快捷方式

    我喜欢不带大括号的简短 if 语句 PHP 例如 if x y echo z 如果我想添加几行 可能只是临时用于调试 我必须手动添加大括号 是否有一个 Netbeans 插件可以通过快捷方式执行此操作 例如 切换 添加 删除 先前的语句大括
  • 如何通过 Java 8 谓词仅过滤特定元素?

    我有收藏List
  • 来自字节的图像(python)

    我在 python 中有一个字节数组 从任意文本文件转换而来 并且想使用这些字节作为 RGB 值来存储在图像中 做这个的最好方式是什么 谢谢 这是一种迟到的回应 但也许它会在将来帮助其他人 希望我正确地解释了你的问题 但是如果你的 任意文本
  • 使用 python 模块分发预构建的库

    我使用以下脚本来分发包含纯 python 代码的模块 from distutils core import setup Extension import os setup name mtester version 0 1 descripti