Tôi làm cách nào để bao gồm package_data
cho sdist
mà không có tệp MANIFEST.in?Tôi làm cách nào để bao gồm package_data không có tệp MANIFEST.in?
setup.py của tôi trông như thế này:
import setuptools
setuptools.setup(
name='foo',
version='2015.3',
license='commercial',
packages=setuptools.find_packages(),
package_data={'': ['foo/bar.txt']},
)
phiên bản:
[email protected]> python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
>>> import setuptools
>>> setuptools.version.__version__
'3.6'
Tôi chỉ có thể không nhận được foo/bar.txt
bao gồm.
Hoặc là this blog post vẫn đúng? http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging-documentation-on--package_data-/
Trong giờ qua, tôi đã học được rằng những câu này nằm ở đâu đó giữa "gây nhầm lẫn nguy hiểm" và "dối trá". Điều này là do loại gói Python chính là gói nguồn và phương pháp chuẩn để tạo gói nguồn là sử dụng setup.py sdist
. Tuy nhiên, dữ liệu được chỉ định trong package_data không được bao gồm trong các bản phân phối nguồn - chúng chỉ được bao gồm trong các bản phân phối và cài đặt nhị phân (setup.py bdist
) (setup.py install
).
Làm cách nào để bao gồm package_data
cho sdist
mà không có tệp MANIFEST.in?
Cảm ơn cho câu trả lời chi tiết. Thật không may, tôi chỉ cần làm theo các hướng dẫn này nguyên văn và 'bar.txt' không xuất hiện trong' foo-2015.3.tar.gz'. Bạn đề cập đến cố ý bằng cách sử dụng phiên bản cũ của các công cụ thiết lập, nhưng bạn không nói tại sao. Điều đó có thể giải thích tại sao nó không hoạt động? –