मेरे पास python
एप्लिकेशन है जिसमें एक निश्चित लेआउट है जिसे मैं नहीं बदल सकता। मैं setuptools का उपयोग करके इसे लपेटना चाहता हूं, उदा। setup.py
स्क्रिप्ट लिखें।setuptools: पैकेज के बाहर अतिरिक्त फाइलें
आधिकारिक दस्तावेज़ीकरण का उपयोग करके, मैं पहला टेम्पलेट लिखने में सक्षम था। हालांकि, प्रश्न में आवेदन कई अतिरिक्त डेटा फ़ाइलों का उपयोग करता है जो स्पष्ट रूप से किसी भी पैकेज का हिस्सा नहीं हैं। यहाँ एक उदाहरण स्रोत पेड़ है:
somepackage
__init__.py
something.py
data.txt
additionalstuff
moredata.txt
INFO.txt
यहाँ मुसीबत है: something.py
में कोड फ़ाइलों moredata.txt
और INFO.txt
पढ़ता है। पूर्व के लिए, मैं पैकेज में additionalstuff
को बढ़ावा देने के लिए additionalstuff/__init__.py
फ़ाइल को खाली करके setuptools
द्वारा उठाए गए खाली additionalstuff/__init__.py
फ़ाइल को जोड़कर समस्या को बंद कर सकता हूं। लेकिन मैं संभवतः INFO.txt
को अपने .egg
पर कैसे जोड़ सकता हूं?
संपादित
प्रस्तावित समाधान
package_data = { '' : ['moredata.txt','INFO.txt']}
की तर्ज पर कुछ का उपयोग कर मेरे लिए काम नहीं करता है क्योंकि फ़ाइलें moredata
और INFO.txt
एक पैकेज से संबंधित नहीं है, लेकिन एक अलग फ़ोल्डर का हिस्सा हैं यह पूरी तरह से मॉड्यूल का हिस्सा है, किसी भी व्यक्तिगत पैकेज के नहीं। ऊपर वर्णित अनुसार, के मामले में यह __init__.py
फ़ाइल additionpythonalstuff
पर जोड़कर, इसे पैकेज में प्रचारित करने के मामले में तय किया जा सकता है। हालांकि, यह एक सुरुचिपूर्ण समाधान नहीं है और यह INFO.txt
के लिए बिल्कुल भी काम नहीं करता है, जो शीर्ष-स्तरीय निर्देशिका में रहता है।
समाधान
स्वीकार किए जाते हैं जवाब के आधार पर, यहाँ समाधान
है यह setup.py
है:
from setuptools import setup, find_packages
setup(
name='mytest',
version='1.0.0',
description='A sample Python project',
author='Test',
zip_safe=False,
author_email='[email protected]',
keywords='test',
packages=find_packages(),
package_data={'': ['INFO.txt', 'moredata.txt'],
'somepackage':['data.txt']},
data_files=[('.',['INFO.txt']),
('additionalstuff',['additionalstuff/moredata.txt'])],
include_package_data=True,
)
और यह MANIFEST.in
है:
include INFO.txt
graft additionalstuff
include somepackage/*.txt
[_stackoverflow.com/questions/1612733/including-non-python-files-with-setup-py) के संभावित डुप्लिकेट – pacholik
यह डुप्लिकेट नहीं है । दिए गए प्रश्न में, स्वीकृत समाधान 'package_data' का उपयोग करना है। यह मैंने पहले ही कर लिया है। कृपया ध्यान दें कि '' '(खाली स्ट्रिंग) का उपयोग करने के लिए दिया गया समाधान मेरे लिए काम नहीं करता है क्योंकि यह स्पष्ट रूप से "सभी संकुल" को संदर्भित करता है, जो मेरे लिए लागू नहीं होता है, क्योंकि जिस फ़ाइल को मैं जोड़ना चाहता हूं वह संबंधित नहीं है * कोई * पैकेज, जो ठीक उसी समस्या का सामना कर रहा है। – carsten