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



pip packaging (1)

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

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

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

संबंधित पथ के साथ 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





package-managers