首页 > 编程语言 > 详细

Python distribute到底使用package_data还是MANIFEST.in?

时间:2014-03-21 11:55:39      阅读:486      评论:0      收藏:0      [点我收藏+]

今天看Flask的文档,里面提到如何通过distribute发布你自己的Python包。讲包含文件的时候,提到要用MANIFEST.in并将include_package_data设置为True。

 

由于我自己也发布过几个包,当时并没有设置include_package_data,而且看lxyu的包setup.py里面设置的是package_data,所以就想搞清楚到底是怎么回事。

 

Google了一会,最终搞清楚了区别,记录在这里。

 

1、package_data

 

这个确实可以包含文件,但是实际上这是一个“lie”,也就是谎言。

 

为什么这么说呢?因为生成最终发布文件的时候有两种命令:

$ python setup.py bdist upload

$ python setup.py sdist upload

看到了吗?区别就是bdist和sdist。

 

bdist是发布二进制文件,sdist是发布源文件。

 

说package_data是谎言的原因就是,package_data只有在使用bdist时候才有用!也就是说如果你使用sdist的话是无法正确包含文件的!

 

2、MANIFEST.in

 

相比之下MANIFEST.in才是正确方法。MANIFEST.in无论在sdist还是bdist下都可以正常工作。

 

不过我还是有个疑问,就是include_package_data必须设置吗?

 

Flask文档中提到必须设置为True,否则MANIFEST.in不起作用。不过我自己发布包的时候并没有设置,还是可以用,所以猜测这个参数的默认值就是True。

 

保险起见,还是设置为True吧。

 

 

总结起来,正确包含文件的方式是:

  • 使用MANIFEST.in
  • 设置include_package_data=True

Python distribute到底使用package_data还是MANIFEST.in?,布布扣,bubuko.com

Python distribute到底使用package_data还是MANIFEST.in?

原文:http://www.cnblogs.com/numbbbbb/p/3615155.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!