Theo khuyến nghị của @Joe để xóa include_package_data=True
dò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 sdist
cho 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.gz
tậ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/data
và /opt/local/myproject/etc
.
data_files
giả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_data
vàdata_files
?