Python Language
पायथन पैकेज बनाना
खोज…
टिप्पणियों
Pypa नमूना परियोजना में एक पूर्ण, आसानी से परिवर्तनीय टेम्पलेट setup.py
जो क्षमताओं की एक बड़ी रेंज को प्रदर्शित करता है सेटअप-उपकरण की पेशकश की है।
परिचय
प्रत्येक पैकेज के लिए एक setup.py
फ़ाइल की आवश्यकता होती है जो पैकेज का वर्णन करती है।
एक साधारण पैकेज के लिए निम्नलिखित निर्देशिका संरचना पर विचार करें:
+-- package_name
| |
| +-- __init__.py
|
+-- setup.py
__init__.py
में केवल पंक्ति def foo(): return 100
।
निम्नलिखित setup.py
पैकेज को परिभाषित करेगा:
from setuptools import setup
setup(
name='package_name', # package name
version='0.1', # version
description='Package Description', # short description
url='http://example.com', # package URL
install_requires=[], # list of packages this package depends
# on.
packages=['package_name'], # List of module names that installing
# this package will provide.
)
virtualenv आपके अन्य पायथन परिवेशों को संशोधित किए बिना पैकेज संस्थापनों का परीक्षण करने के लिए बहुत अच्छा है:
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo()
100
PyPI पर अपलोड करना
एक बार जब आपका setup.py
पूरी तरह कार्यात्मक है ( परिचय देखें), तो आपके पैकेज को PyPI पर अपलोड करना बहुत आसान है।
सेटअप .pypirc फ़ाइल
यह फ़ाइल आपके खातों को प्रमाणित करने के लिए लॉगिन और पासवर्ड संग्रहीत करती है। यह आमतौर पर आपके घर निर्देशिका में संग्रहीत किया जाता है।
# .pypirc file
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password
[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password
पैकेज अपलोड करने के लिए twine
का उपयोग करना अधिक सुरक्षित है, इसलिए सुनिश्चित करें कि स्थापित है।
$ pip install twine
रजिस्टर करें और testpypi पर अपलोड करें (वैकल्पिक)
नोट : PyPI अपलोड किए गए पैकेजों को ओवरराइट करने की अनुमति नहीं देता है , इसलिए यह पहले एक समर्पित परीक्षण सर्वर पर अपनी तैनाती का परीक्षण करने के लिए विवेकपूर्ण है, उदाहरण के लिए testpypi। इस विकल्प पर चर्चा की जाएगी। कैलेंडर पैकेजिंग या सिमेंटिक संस्करण जैसे अपलोड करने से पहले अपने पैकेज के लिए एक संस्करण योजना पर विचार करें।
या तो लॉग इन करें, या Testpypi पर एक नया खाता बनाएं । पंजीकरण केवल पहली बार आवश्यक है, हालांकि एक से अधिक बार पंजीकरण करना हानिकारक नहीं है।
$ python setup.py register -r pypitest
अपने पैकेज की मूल निर्देशिका में रहते हुए:
$ twine upload dist/* -r pypitest
आपका पैकेज अब आपके खाते के माध्यम से सुलभ होना चाहिए।
परिक्षण
एक परीक्षण आभासी वातावरण बनाओ। Testpypi या PyPI से अपने पैकेज को pip install
करने की कोशिश करें।
# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv) pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...
(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100
सफल होने पर, आपका पैकेज कम से कम आयात योग्य है। आप PyPI को अपने अंतिम अपलोड से पहले अपने एपीआई के परीक्षण पर विचार कर सकते हैं। यदि आप परीक्षण के दौरान पैकेज में विफल रहे हैं, तो चिंता न करें। आप अभी भी इसे ठीक कर सकते हैं, फिर से टेस्टपाइप पर अपलोड कर सकते हैं और फिर से परीक्षण कर सकते हैं।
रजिस्टर करें और PyPI पर अपलोड करें
सुनिश्चित करें कि twine
स्थापित है:
$ pip install twine
या तो लॉग इन करें या PyPI पर एक नया खाता बनाएँ ।
$ python setup.py register -r pypi
$ twine upload dist/*
बस! आपका पैकेज अब लाइव है ।
यदि आपको बग का पता चलता है, तो बस अपने पैकेज का एक नया संस्करण अपलोड करें।
प्रलेखन
अपने पैकेज के लिए कम से कम किसी प्रकार के प्रलेखन को शामिल करना न भूलें। PyPi डिफ़ॉल्ट स्वरूपण भाषा reStructuredText के रूप में लेता है।
रीडमी
यदि आपके पैकेज में बड़ा दस्तावेज़ नहीं है, तो README.rst
फ़ाइल में अन्य उपयोगकर्ताओं की मदद कर सकते हैं। जब फ़ाइल तैयार हो जाती है, तो उसे दिखाने के लिए PyPi को बताने के लिए एक अन्य की आवश्यकता होती है।
setup.cfg
फ़ाइल बनाएँ और उसमें ये दो पंक्तियाँ डालें:
[metadata]
description-file = README.rst
ध्यान दें कि यदि आप रखने का प्रयास Markdown अपने पैकेज में फ़ाइल, PyPi किसी फ़ॉरमेट के बिना एक शुद्ध पाठ फ़ाइल के रूप में यह पढ़ा जाएगा।
लाइसेंसिंग
अपने पैकेज में LICENSE.txt
फ़ाइल डालने के लिए अक्सर स्वागत से अधिक यह होता है कि उपयोगकर्ताओं को यह बताने के लिए कि क्या वे वाणिज्यिक परियोजनाओं में आपके पैकेज का उपयोग कर सकते हैं या यदि आपका कोड उनके लाइसेंस के साथ उपयोग करने योग्य है, तो ओपनसोर्स लाइसेंस में से एक के साथ।
अधिक पठनीय तरीके से कुछ लाइसेंस टीएल; डीआर;
पैकेज को निष्पादन योग्य बनाना
यदि आपका पैकेज केवल एक लाइब्रेरी नहीं है, लेकिन इसमें एक कोड का एक टुकड़ा है जिसे आपके पैकेज के इंस्टॉल होने पर शोकेस या स्टैंडअलोन एप्लिकेशन के रूप में इस्तेमाल किया जा सकता है, उस कोड को __main__.py
फ़ाइल में __main__.py
।
रखो __main__.py
में package_name
फ़ोल्डर। इस तरह आप इसे सीधे कंसोल से चला पाएंगे:
python -m package_name
यदि कोई __main__.py
फ़ाइल उपलब्ध नहीं है, तो पैकेज इस कमांड के साथ नहीं चलेगा और यह त्रुटि मुद्रित होगी:
अजगर:
package_name.__main__;
नाम का कोई मॉड्यूल नहींpackage_name.__main__;
'package_name' एक पैकेज है और इसे सीधे निष्पादित नहीं किया जा सकता है।