微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python setup.py调用makefile不包含二进制文件

如何解决Python setup.py调用makefile不包含二进制文件

我找到了一个非常简单的解决方案。

正如我所说,我的主要问题是我正在打包已编译的文件。要从tarball / zip文件中排除这些文件,只需将其放在MANIFEST.in:中prune bin

然后只需从setup.py调用makefile:

directory = 'bin'
if not os.path.exists(directory):
    os.makedirs(directory)

subprocess.call(['make', '-C', 'src'])

这样,当有人这样做时pip install whatever,将调用make文件并放上二进制文件bin(必须在make文件上指定它)。

然后,只需说一下复制这些文件的设置即可:

setup(
...
data_files=[('bin', ['bin/binaries'])],
)

做完了!希望有人觉得这很有用:)

解决方法

一些上下文:我有一些C代码,在编译时可以像这样在终端中调用:./my_excec -params它生成一些我在python中用于生成图表的文件,以及其他内容。

我想将所有内容都打包在python库中,包括C代码和python代码。C代码不是python扩展(将来会很好,但现在不会)。

我有一个make文件来编译C代码,我知道可以从setup.py调用它,如下所示: subprocess.call(['make','-C','word2vec-src'])

我想要做的是:pip install my_module应该调用makefile,编译C,以便用户可以调用二进制文件:my_excec -params并且还可以在其周围导入python代码。

我遇到的问题是包装python包时。我data_filessetup()这样使用选项:data_files=[('bin',['bin/binary_file'])],将文件从bin移到安装文件夹(在虚拟环境中),然后可以调用它们。但是,当打包还将压缩文件放到tarball中时,当我打电话给pip
install my_module`时,它会将压缩文件从我的计算机中放出。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。