如何解决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_files
在setup()
这样使用选项:data_files=[('bin',['bin/binary_file'])],
将文件从bin移到安装文件夹(在虚拟环境中),然后可以调用它们。但是,当打包还将压缩文件放到tarball中时,当我打电话给pip
install my_module`时,它会将压缩文件从我的计算机中放出。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。