【问题标题】:Adding json file to MANIFEST.in and installing package results in an error将 json 文件添加到 MANIFEST.in 并安装包会导致错误
【发布时间】:2018-08-15 19:51:46
【问题描述】:

我的包树看起来像这样:(还有一些不相关的文件)

- setup.py
- MANIFEST.in
- mydir
  |
  - file.py
  - file.json

setup.py:

from distutils.core import setup

setup(
    name = 'mydir',
    packages = ['mydir'], 
    version = '1.2.2',
    description = 'desc',
    author = 'my name',
    author_email = 'my@email.com',
    url = 'https://github.com/myname/mydir', 
    download_url = 'https://github.com/myname/mydir/archive/1.2.2.tar.gz',
    keywords = ['key1', 'key2'],
    classifiers = [],
  )

MANIFEST.in 文件为空时,dist 文件中不包含 json。
所以我已经将 json 文件添加到 MANIFEST.in 所以现在它只包含:

include mydir/file.json

当我执行python setup.py sdist 命令时,自动生成的MANIFEST 文件包含所有必要的文件,包括file.json
但是,当我尝试使用 pip 安装我的包时,我收到以下错误:

error: can't copy 'file.json': doesn't exist or not a regular file

【问题讨论】:

  • 你能发布你的 setup.py 文件吗?
  • @fasouto 已更新。谢谢
  • 我认为缺少 include_package_data :)
  • @fasouto 你是对的,但仅此还不够,我不得不将用于setup.py 的库从distutils.core 更改为setuptools,请参阅下面的解决方案
  • 我想知道,如果你想在file.py中使用file.json,那么获取文件路径的正确方法是什么?

标签: python setuptools distribute


【解决方案1】:

知道了。
setup.py 更改为使用 from setuptools import setup, find_packages 而不是 distutils.core
还添加了include_package_data = True,setup.py

setup(
    ...
    include_package_data = True,
    ...
)

MANIFEST.in 中的包含一起,json 文件按预期提取到目标目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 2016-08-11
    • 2018-12-20
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多