将json文件添加到MANIFEST.in并安装包会导致错误

时间:2018-03-07 16:13:02

标签: python setuptools distribute

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

- 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文件为空时,json不包含在dist文件中 所以我已经将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

1 个答案:

答案 0 :(得分:1)

知道了。
已将setup.py更改为使用from setuptools import setup, find_packages而非distutils.core
同时将include_package_data = True,添加到setup.py

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

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