当前位置: 首页 > 面试题库 >

使用setuptools / distribute打包资源

郎磊
2023-03-14
问题内容

我正在开发一个具有多个.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。我想念什么?

谢谢!


问题答案:

您是否查看过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中进行设置,以便在安装过程中解压缩所有文件。



 类似资料:
  • 问题内容: 情况 我正在尝试将开放源代码库移植到Python3。(SymPy,如果有人想知道的话。) 因此,2to3在为Python 3构建时,我需要自动运行。为此,我需要使用。因此,我需要移植当前的系统(根据)是。 问题 不幸的是,我不知道什么是这些模块-之间的区别。该文档最好是粗略的,因为它们似乎是彼此的一个分支,旨在在大多数情况下兼容(但实际上不是全部)……等等。 问题 有人可以解释差异吗?

  • 本文向大家介绍利用setuptools打包python程序的方法步骤,包括了利用setuptools打包python程序的方法步骤的使用技巧和注意事项,需要的朋友参考一下 一、准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二、编辑setup.py 1.编辑setup.py文件 2.参数说明 三、编写测试代码 1.在lee

  • 资源合并(打包) 关于资源合并,在 fis3 中有多种方式来实现。为了搞清楚他们都有些什么特点,适用于什么场合,我觉得有必要聚集在一起一一说明下。 packTo 命中目标文件,设置 packTo 即能完成简单的合并操作。 fis.match('/static/folderA/**.js', { packTo: '/static/pkg/folderA.js' }); fis.match('/

  • 其他资源:可以定位为“不需要做任务处理,只要直接打包输出就可以的资源”,比如icon图标资源、字体资源等 打包其他资源只需要使用到 file-loader 一、打包其他资源的核心配置 // webpack.config.js webpack的配置文件 // 路径: ./webpack.config.js ………… // loader的配置 module: { rul

  • 一、打包图片的核心配置 // loader的配置 module: { rules: [ //打包 css 文件的详细loader配置 { //匹配哪些文件 test: /\.css$/, //使用哪些loader进行处理

  • 一、创建html文件、 css 文件或 less 文件 <!-- 文件路径 ./src/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="