【发布时间】:2019-11-08 23:07:08
【问题描述】:
这看起来很像this question,但并不完全一样。
该问题的答案包括如何将额外的数据获取到源代码分发和二进制分发中,但实际上并没有说明如何在包含在源代码分发中时安装包数据,或者如何将它们安装在一个 wheel 文件中。
这是我的意思的一个例子(python 3.7.4):
% ls
MANIFEST.in README.txt foopackage setup.py venv
% cat setup.py
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(
name='foopackage',
version='0.0.1',
description='A Package Full of Foo',
packages=find_packages(),
package_data={
'foopackage': [
'README.txt',
],
},
include_package_data=True,
)
% cat MANIFEST.in
include README.txt
% . venv/bin/activate
(venv)
% python setup.py sdist bdist_wheel
[...]
% ls dist
foopackage-0.0.1-py3-none-any.whl foopackage-0.0.1.tar.gz
(venv)
% unzip -v dist/foopackage-0.0.1-py3-none-any.whl| grep README.txt
(venv)
% tar tvzf dist/foopackage-0.0.1.tar.gz| grep README.txt
-rw-r--r-- 0 matt staff 0 8 Nov 17:21 foopackage-0.0.1/README.txt
(venv)
% deactivate
% cd ../foo
% . py/bin/activate
(py)
% pip install ../foopackage/dist/foopackage-0.0.1.tar.gz
Processing ../foopackage/dist/foopackage-0.0.1.tar.gz
Installing collected packages: foopackage
Found existing installation: foopackage 0.0.1
Uninstalling foopackage-0.0.1:
Successfully uninstalled foopackage-0.0.1
Running setup.py install for foopackage ... done
Successfully installed foopackage-0.0.1
You are using pip version 19.0.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(py)
% find . -name README.txt
(py)
%
README.txt 文件未包含在 wheel 中,尽管包含在 sdist 文件中,但在安装该软件包时并未安装。
我似乎找不到让 setuptools 在某处实际安装此文件的魔法咒语。我错过了什么?
我可能应该指出,我正在构建的真正包必须与 py27 和 py34+ 兼容,以防以任何方式限制解决方案。
【问题讨论】:
标签: python python-3.x setuptools