在Python包中包含外部二进制文件

11 投票
2 回答
6180 浏览
提问于 2025-04-18 12:34

我有一个Python模块,基本上是一个大包装器(除了这个,它还做了很多其他事情),用来调用一个外部的二进制文件(不是Python写的)。我想把这些二进制文件(一个用于macOS,一个用于Linux)和我的代码一起打包。现在我在我的setup.py文件里有以下内容:

package_data={'packagename': ['lib/app-osx/*', 'lib/app-linux/*', 'lib/*.awk']},

这些文件的位置在:

/packagename
 /lib
  script.awk
  /app-osx/
    app
  /app-linux
    app

我好像找不到它们被安装在哪里,如果它们真的被安装了的话?这方面有没有什么约定?显然,我不能用依赖关系来处理这个问题 :(

另外,在Python脚本中,找到它们的位置的最佳方法是什么?

谢谢

2 个回答

1

我觉得 MANIFEST.in 可以解决与 Python 包相关的所有附加文件的问题。

recursive-include lib/app-osx/*
recursive-include lib/app-linux/*
recursive-include lib/*.awk
3

在Jonathon的提醒下,我查看了聊天记录,找到了Lukas给我的解决办法。这个解决办法其实很简单,就是在setup.py文件中添加以下内容:

zip_safe=False

撰写回答