Отказ
Хотя это технически возможно, имейте в виду, что если исходный дистрибутив не содержит файл и колесо, в конечном итоге вы будете иметь разные установки одного и того же пакета для одних и тех же метаданных, что является плохим поведением. В приведенном ниже примере
$ pip install spam --only-binary=spam # force installation from wheel
установит file.txt
:
$ pip show -f spam | grep file.txt
spam/file.txt
, а
$ pip install spam --no-binary=spam # force installation from source dist
не будет. Это определенный источник для введения новых ошибок, и ни один пользователь никогда не скажет вам спасибо за это решение.
Если вы действительно уверены, что это то, что вам нужно: вы можете исключить файл в MANIFEST.in
. Пример:
project
├── spam
│ ├── __init__.py
│ └── file.txt
├── MANIFEST.in
└── setup.py
MANIFEST.in
exclude spam/file.txt
setup.py
from setuptools import setup
setup(
name='spam',
version='0.1',
packages=['spam'],
package_data={'spam': ['file.txt']},
)
Строительное колесо:
$ python setup.py bdist_wheel >/dev/null 2>&1 && unzip -l dist/spam-*.whl | grep file.txt
0 04-17-2019 21:25 spam/file.txt
Источник здания dist:
$ python setup.py sdist --formats=zip >/dev/null 2>&1 && unzip -l dist/spam-*.zip | grep file.txt
<empty>