Python setup.py 在 egg 中包含 .json 文件

Posted

技术标签:

【中文标题】Python setup.py 在 egg 中包含 .json 文件【英文标题】:Python setup.py include .json files in the egg 【发布时间】:2015-07-21 17:53:00 【问题描述】:

我也想将 .json 文件打包到 python egg 文件中。

例如:boto 包有endpoints.json 文件。但是当我运行 python setup.py bdist_egg 它不包含鸡蛋中的 json 文件。如何在 egg 中包含 Json 文件?

如何在 egg 中包含 *.json 文件?

下面是 setup.py 代码

from setuptools import setup, find_packages, Extension

setup(
  name='X-py-backend',
  version='tip',
  description='X Python backend tools',
  author='meme',
  packages=find_packages('python'),
  package_dir='': 'python',
  data_files=[('boto', ['python/boto/endpoints.json'])],
  namespace_packages = ['br'],
  zip_safe=True,
)

setup(
  name='X-py-backend',
  version='tip',
  packages=find_packages('protobuf/target/python'),
  package_dir='': 'protobuf/target/python',
  namespace_packages = ['br'],
  zip_safe=True,
)

【问题讨论】:

【参考方案1】:

您只需要在data_files 参数上列出文件。这是一个例子。

setup(
  name='X-py-backend',
  version='tip',
  description='XXX Python backend tools',
  author='meme',
  packages=find_packages('python'),
  package_dir='': 'python',
  data_files=[('boto', ['boto/*.json'])]
  namespace_packages = ['br'],
  zip_safe=True
)

您可以在此处查看详细信息。 https://docs.python.org/2/distutils/setupscript.html#installing-additional-files

另一种方法是使用MANIFEST.in 文件。您需要在项目根目录中创建一个MANIFEST.in 文件。这是一个例子。

include python/boto/endpoints.json

请访问此处了解更多信息。https://docs.python.org/2/distutils/sourcedist.html#manifest-template

【讨论】:

这不起作用。进行此更改后,我运行了“python setup.py bdist_egg”。当我解压缩 .egg 文件时,我在 boto 包中找不到“endpoints.json”文件。我在这里错过了什么吗? 请分享您编辑的 setup.py。我会调查的。【参考方案2】:

这对我有用。

setup.py:

from setuptools import setup, find_packages

setup(
    name="clean",
    version="0.1",
    description="Clean package",
    packages=find_packages() + ['config'],
    include_package_data=True
)

MANIFEST.in:

recursive-include config *

项目根目录下有一个配置文件,其中包含一大堆json文件。

希望这会有所帮助。

【讨论】:

我有data_filesglob 等正确包含的所有内容,但*.json 文件没有。在我看到你用include_package_data kwarg 发布的帖子后,我使用了它(虽然我认为它只适用于package_data)和tada,没有MANIFEST.in,所有东西都正确打包!谢谢! 我这样做了,但我必须包含 MANIFEST.in 文件,这与 @PeterBadida 不同。

以上是关于Python setup.py 在 egg 中包含 .json 文件的主要内容,如果未能解决你的问题,请参考以下文章

python setup.py egg_info mysqlclient

出现 Command “python setup.py egg_info” failed解决b...

安装 Django-toolbelt 时出现 python_setup.py 和 egg.info 错误

命令“python setup.py egg info”失败,错误代码为 1 ~~

安装 web3.py 时出错。 “python setup.py egg_info”

安装FiPy时出错“命令”python setup.py egg_info“失败,错误代码为1”