【问题标题】:Python Data File Access both Locally and in Distributed Package本地和分布式包中的 Python 数据文件访问
【发布时间】:2018-05-20 20:30:59
【问题描述】:

在模块的本地测试和分布式包(例如使用wheel)中是否有访问数据文件的pythonic方法?

具体来说,我的问题与下面链接的评论相同。

Python Access Data in Package Subdirectory

【问题讨论】:

  • documentation 应该会给您所需的答案。
  • 基本上设置您的setup.py 文件以包含data_files 列表,python 应该将它们与分布式包一起打包(例如当您将其转换为wheel 时。它将在本地工作以及假设目录结构在分发过程中没有任何变化。
  • 问题是data_files确实改变了目录结构——它将文件放在data目录下的根目录下。对于位于不同文件夹和子文件夹中的文件,这将需要手动重新创建这些文件夹和子文件夹,这既繁琐又容易出错(对目录结构的任何更改都必须在那里重新实现)。链接的文档也适用于distutils,而不适用于setuptools(对不起,我没有在问题中指定,但我已经在wheel 中有文件,我只需要访问);是否恰好具有相同的规格?
  • 来自文档:Note that you can specify the directory names where the data files will be installed, but you cannot rename the data files themselves.,这意味着您应该能够移动数据文件部署到的位置。 data_files=[('path/to/data/files',['data_file1.dat','data_file2.dat']。我认为setuptools 处理它的方式相同,但不是 100%
  • 在仔细检查了setuptools 如何处理他们的数据文件后,我觉得它应该就地复制它们。因此,无论它们在您的本地文件夹中的什么位置,都应该是它们在您的部署中的最终位置。你的setup.py 是什么样的?

标签: python setuptools


【解决方案1】:

将包放入setup.py 中的setup(..., data_files=[('', YOUR_DATA_FILES)],...) 参数('' 是重要部分)就地复制它们,并且可以在本地测试和分发时按其他方式访问它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2018-05-28
    • 2011-05-09
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多