tôi đang cố gắng để tạo ra một gói Python, và tôi có một cấu trúc thư mục như thế này:MANIFEST.in, package_data và data_files làm rõ?
mypkg/
├── __init__.py
├── module1
│ ├── x.py
│ ├── y.py
│ └── z.txt
└── module2
├── a.py
└── b.py
Sau đó, tôi đã thêm tất cả các file trong MANIFEST.in
và khi tôi kiểm tra các kho lưu trữ được tạo ra, nó đã có tất cả các tập tin.
Khi tôi làm python setup.py install
trong dist-packages/mypkg/module1
. Tôi chỉ thấy các tệp Python chứ không phải là z.txt
.
Tôi có z.txt
trong cả MANIFEST.in
và setup.py
:
setup (
packages = [
'mypkg',
'mypkg.module1',
'mypkg.module2',
],
package_data = {
'mypkg': ['module1/z.txt']
},
include_package_data = True,
...
)
tôi đã cố gắng bổ sung thêm file như data_files
cũng nhưng điều đó đã tạo ra một thư mục trong /usr/local
. Tôi muốn giữ nó bên trong thư mục mã nguồn vì mã sử dụng dữ liệu đó.
Tôi đã đọc các bài đăng được liệt kê bên dưới nhưng tôi vẫn thấy nhầm lẫn về cách giữ đúng z.txt
ở đúng vị trí sau setup.py install
.
- MANIFEST.in ignored on "python setup.py install" - no data files installed?
- Installing data files into site-packages with setup.py
- http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging-documentation-on--package_data-/
Cập nhật: Đã khắc phục khi tôi bắt đầu sử dụng setuptools thay vì distutils.core. Tôi nghĩ rằng đó là một số vấn đề với distutils không đồng ý với manifest trong khi setuptools làm việc mà không có bất kỳ thay đổi trong mã. Tôi khuyên bạn nên sử dụng công cụ thiết lập trong tương lai. Sử dụng liên kết [ở đây] [1]. [1]: http://peak.telecommunity.com/DevCenter/setuptools#developer-s-guide – Sourabh