python गलत जगह पर डेटा फ़ाइलों को स्थापित करने के लिए पिप



pip packaging (1)

संबंधित पथ के साथ data_files उपयोग न करें दरअसल, data_files बिल्कुल भी उपयोग न करें, जब तक कि आप यह सुनिश्चित न करें कि लक्ष्य पथ सही तरह से तैयार किए गए क्रॉस-प्लेटफ़ॉर्म तरीके से ठीक तरह से तैयार किए गए हैं जो कड़े हुए कोडित मानों से उत्पन्न होते हैं।

इसके बजाय package_data उपयोग करें:

setup(
    # (...)
    package_data={
        "hackertray.data": [
            "hacker-tray.png",
        ],
    },
)

जहां hackertray.data एक उचित अजगर पैकेज है (यानी एक निर्देशिका है जिसमें __init__.py नाम की फ़ाइल है) और hacker-tray.png सही __init__.py बगल में है।

यह दिखना चाहिए कि यह कैसे दिखना चाहिए:

.
|-- hackertray
|   |-- __init__.py
|   `-- data
|       |-- __init__.py
|       `-- hacker-tray.png
`-- setup.py

आप छवि फ़ाइल का पूरा पथ प्राप्त कर सकते हैं:

from pkg_resources import resource_filename
print os.path.abspath(resource_filename('hackertray.data', 'hacker-tray.png'))

मुझे आशा है कि वह मदद करेंगे।

PS: पायथन <2.7 package_data में सूचीबद्ध फाइलों के पैकेजिंग से संबंधित एक package_data । पैकेजिंग के लिए यदि आप Python 2.7 से पुराने कुछ का उपयोग कर रहे हैं, तो हमेशा मैनिफ़ेस्ट फ़ाइल सुनिश्चित करें। अधिक जानकारी के लिए यहां देखें: https://groups.google.com/d/msg/python-virtualenv/v5KJ78LP9Mo/OiBqMcYVFYAJ

पैकेज के लिए स्रोत यहाँ है

मैं इस पैकेज के माध्यम से सूचकांक से स्थापित कर रहा हूं:

easy_install hackertray
pip install hackertray

easy_install निम्न फ़ोल्डर में images/hacker-tray.png स्थापित करता है:

/usr/local/lib/python2.7/dist-packages/hackertray-1.8-py2.7.egg/images/

जबकि, pip इसे स्थापित करता है:

/usr/local/images/

मेरा setup.py इस प्रकार है:

from setuptools import setup
setup(name='hackertray',
      version='1.8',
      description='Hacker News app that sits in your System Tray',
      packages=['hackertray'],
      data_files=[('images', ['images/hacker-tray.png'])])

मेरी MANIFEST फ़ाइल है:

include images/hacker-tray.png




package-managers