如何控制什么文件包含在一个车轮? 似乎 MANIFEST.in
不使用的 python setup.py bdist_wheel
。
更新 :
关于从源 tarball 安装与从轮子安装之间的区别,我错了。源发行版包括在 MANIFEST.in
中指定的文件,但是安装的包只有 python 文件。需要采取步骤来确定应该安装的其他文件,无论是通过源代码分发、 egg 还是滚轮进行安装。也就是说,对于额外的包文件,需要使用 Package _ data,对于包之外的文件,如命令行脚本或系统配置文件,则需要使用 Data _ files。
我有 一个项目,我一直在使用 python setup.py sdist
来建立我的软件包,MANIFEST.in
来控制包含和排除的文件,以及 火焰和 清单来确认我的设置。
我最近将其转换为双 Python 2/3代码,并添加了一个 setup.cfg
[bdist_wheel]
universal = 1
我可以建立一个车轮与 python setup.py bdist_wheel
,它似乎是一个通用的车轮所需要的。但是,它不包括 MANIFEST.in
中指定的所有文件。
我深入研究了一下,现在对包装和车轮有了更多的了解。以下是我学到的:
我上传两个包文件到 PyPi 上的 multigtfs 项目:
multigtfs-0.4.2.tar.gz
-源焦油球,它包含 MANIFEST.in
中的所有文件。multigtfs-0.4.2-py2.py3-none-any.whl
-所讨论的二进制分布。我使用 Python 2.7.5创建了两个新的虚拟环境,并安装了每个包(pip install multigtfs-0.4.2.tar.gz
)。这两个环境几乎完全相同。它们有不同的 .pyc
文件,即“编译”的 Python 文件。有记录磁盘上不同路径的日志文件。从源焦油球的安装包括一个文件夹 multigtfs-0.4.2-py27.egg-info
,详细的安装,和车轮安装有一个 multigtfs-0.4.2.dist-info
文件夹,详细的过程。但是,从使用 multigtfs 项目的代码的角度来看,这两种安装方法没有区别。
显然,我的测试也没有使用. zip 文件,因此测试套件将会失败:
$ django-admin startproject demo
$ cd demo
$ pip install psycopg2 # DB driver for PostGIS project
$ createdb demo # Create PostgreSQL database
$ psql -d demo -c "CREATE EXTENSION postgis" # Make it a PostGIS database
$ vi demo/settings.py # Add multigtfs to INSTALLED_APPS,
# Update DATABASE to set ENGINE to django.contrib.gis.db.backends.postgis
# Update DATABASE to set NAME to test
$ ./manage.py test multigtfs.tests # Run the tests
...
IOError: [Errno 2] No such file or directory: u'/Users/john/.virtualenvs/test/lib/python2.7/site-packages/multigtfs/tests/fixtures/test3.zip'
利用答案中的建议,我在 setup.py
中添加了一些额外的指令:
from __future__ import unicode_literals
# setup.py now requires some funky binary strings
...
setup(
name='multigtfs',
packages=find_packages(),
package_data={b'multigtfs': ['test/fixtures/*.zip']},
include_package_data=True,
...
)
这会将 zip 文件(以及 README)安装到文件夹中,测试现在可以正确运行了。谢谢你的建议!