@Joe की include_package_data=True
लाइन हटाने की सिफारिश के बाद मेरे लिए भी काम किया।
थोड़ा और विस्तृत करने के लिए, मेरे पास कोई MANIFEST.in
फ़ाइल नहीं है। मैं गिट का उपयोग करता हूं और सीवीएस का नहीं।
रिपोजिटरी इस तरह का आकार लेती है:
/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...
], },
)
मैं python setup.py sdist
एक स्रोत डिस्ट्रीब के लिए दौड़ता हूं (बाइनरी की कोशिश नहीं की है)।
और जब एक नए आभासी वातावरण के अंदर, मेरे पास एक myproject-4.19.tar.gz
, फ़ाइल, और मैं उपयोग करता हूं
(venv) pip install ~/myproject-4.19.tar.gz
...
और मेरे आभासी वातावरण में स्थापित होने के अलावा site-packages
, उन विशेष डेटा फ़ाइलों को स्थापित करने के लिए /opt/local/myproject/data
और /opt/local/myproject/etc
।
data_files
समस्या को हल किया। लेकिन यह त्रुटि-प्रवण है और मुझे "सही नहीं" लगता है। क्या कोई यह सत्यापित कर सकता है कि दोनों में विन्यास की नकल करना वास्तव में आवश्यक हैpackage_data
औरdata_files
?