使用setuptools / distribute打包资源

发布于 2021-01-29 17:50:56

我正在开发一个具有多个.txt依赖项的Python egg(它们是用于通过egg本身生成文件的模板),而我正努力将这些依赖项复制到site- packages期间setup.pyinstall。根据distribute文档

我的软件包的文件系统:

setup.py
package
|--- __init__.py
|--- main.py
|--- binary (calls main.py with pkg_resources.load_entry_point)
|--- templates
     |--file1.txt
     |--file2.txt

在setup.py中:

setup(
    [...]
    eager_resources = ['templates/file1.txt', 'templates/file2.txt']
)

在我的包装内:

from pkg_resources import resource_string
tpl = resource_string(__name__, 'templates/file1.txt')

…配置和文件系统的这种组合应导致file1.txtfile2.txt通过提供pkg_resources.resource_string。不幸的是,它们在site- packages期间没有被复制到setup.py install。我想念什么?

谢谢!

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您是否查看过setuptools文档,其中包含软件包数据:https ://setuptools.readthedocs.io/en/latest/setuptools.html#include-
    data-files

    基本上,您只需要include_package_data=True在setup.py文件中进行设置即可。如果您使用的是Subversion或CVS,则将包含所有版本化的文件。如果不是,则可以指定MANIFEST.in文件中要包括的文件。

    我相信分发也支持这一点。

    然后,您可以像打包文件一样访问文件。即在main.py中,您可以拥有:

    import os.path
    f = open(os.path.join(os.path.dirname(__file__),'templates','file1.txt'))
    print f.read()
    f.close()
    

    这也可以在打包版本中使用。一个警告是您还必须zip_safe = False在setup.py中进行设置,以便在安装过程中解压缩所有文件。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看