Theo khuyến nghị của @Joe để xóa include_package_data=Truedòng cũng có hiệu quả với tôi.
Để giải thích thêm một chút, tôi không có MANIFEST.in tập tin. Tôi sử dụng Git chứ không phải CVS.
Kho lưu trữ có hình dạng này:
/myrepo
- .git/
- setup.py
- myproject
- __init__.py
- some_mod
- __init__.py
- animals.py
- rocks.py
- config
- __init__.py
- settings.py
- other_settings.special
- cool.huh
- other_settings.xml
- words
- __init__.py
word_set.txt
setup.py:
from setuptools import setup, find_packages
import os.path
setup (
name='myproject',
version = "4.19",
packages = find_packages(),
# package_dir={'mypkg': 'src/mypkg'}, # didnt use this.
package_data = {
# If any package contains *.txt or *.rst files, include them:
'': ['*.txt', '*.xml', '*.special', '*.huh'],
},
#
# Oddly enough, include_package_data=True prevented package_data from working.
# include_package_data=True, # Commented out.
data_files=[
# ('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
('/opt/local/myproject/etc', ['myproject/config/settings.py', 'myproject/config/other_settings.special']),
('/opt/local/myproject/etc', [os.path.join('myproject/config', 'cool.huh')]),
#
('/opt/local/myproject/etc', [os.path.join('myproject/config', 'other_settings.xml')]),
('/opt/local/myproject/data', [os.path.join('myproject/words', 'word_set.txt')]),
],
install_requires=[ 'jsonschema',
'logging', ],
entry_points = {
'console_scripts': [
# Blah...
], },
)
Tôi chạy python setup.py sdistcho một nguồn phân phối (chưa thử nhị phân).
Và khi ở trong một môi trường ảo hoàn toàn mới, tôi có một myproject-4.19.tar.gztập tin và tôi sử dụng
(venv) pip install ~/myproject-4.19.tar.gz
...
Và ngoài mọi thứ được cài đặt vào môi trường ảo của tôi site-packages, các tệp dữ liệu đặc biệt đó được cài đặt vào /opt/local/myproject/datavà /opt/local/myproject/etc.
data_filesgiải quyết vấn đề. Nhưng đây là lỗi dễ xảy ra và không "cảm thấy đúng" với tôi. Ai đó có thể xác minh rằng nó thực sự cần thiết để sao chép cấu hình trong cả haipackage_datavàdata_files?