चूंकि किसी ने भी ओपी के इस सवाल को कवर नहीं किया है:
मैं क्या करना चाहता था:
एक अजगर मॉड्यूल स्थापित करें "पाइप स्थापित करें ..." के साथ सक्षम
यहां एक पूर्ण न्यूनतम उदाहरण है, अपने पैकेज को तैयार करने setuptools
और उपयोग करने के लिए PyPI का उपयोग करने और अपलोड करने के मूल चरणों को दर्शाता हैtwine
।
यह कम से कम ट्यूटोरियल पढ़ने के लिए कोई विकल्प नहीं है , इस बहुत ही मूल उदाहरण में इसे कवर करने की तुलना में बहुत अधिक है।
पैकेज का निर्माण करना पहले से ही यहां अन्य उत्तरों द्वारा कवर किया गया है, तो चलिए मान लेते हैं कि हमारे पास वह कदम है और हमारी परियोजना संरचना इस तरह है:
.
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
setuptools
पैकेजिंग के लिए उपयोग करने के लिए, हमें एक फ़ाइल जोड़ने की आवश्यकता है setup.py
, यह हमारी परियोजना के मूल फ़ोल्डर में जाती है:
.
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
न्यूनतम पर, हम अपने पैकेज के लिए मेटाडेटा निर्दिष्ट करते हैं, हमारा काम setup.py
इस तरह दिखेगा:
from setuptools import setup
setup(
name='hellostackoverflow',
version='0.0.1',
description='a pip-installable package example',
license='MIT',
packages=['hellostackoverflow'],
author='Benjamin Gerfelder',
author_email='benjamin.gerfelder@gmail.com',
keywords=['example'],
url='https://github.com/bgse/hellostackoverflow'
)
जब से हमने सेट किया है license='MIT'
, हम अपनी परियोजना में एक प्रतिलिपि शामिल करते हैं LICENCE.txt
, जैसे reStructuredText में एक रीडमी फ़ाइल के साथ README.rst
:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
इस बिंदु पर, हम पैकेजिंग का उपयोग करने के लिए जाने के लिए तैयार हैं setuptools
, अगर हमारे पास यह पहले से स्थापित नहीं है, तो हम इसे स्थापित कर सकते हैं pip
:
pip install setuptools
ऐसा करने के लिए और source distribution
हमारे प्रोजेक्ट रूट फ़ोल्डर में हम setup.py
कमांड लाइन से अपने कॉल को निर्दिष्ट करते हैं, जो हम चाहते हैं sdist
:
python setup.py sdist
यह हमारे वितरण पैकेज और अंडा-जानकारी का निर्माण करेगा, और इस तरह से हमारे पैकेज के साथ एक फ़ोल्डर संरचना में परिणाम होगा dist
:
.
├── dist/
├── hellostackoverflow.egg-info/
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
इस बिंदु पर, हमारे पास एक पैकेज है जिसे हम उपयोग कर सकते हैं pip
, इसलिए हमारी परियोजना रूट से (यह मानते हुए कि आपके पास सभी नामकरण इस उदाहरण में हैं:
pip install ./dist/hellostackoverflow-0.0.1.tar.gz
अगर सब ठीक हो जाता है, तो हम अब पायथन इंटरप्रेटर खोल सकते हैं, मैं किसी भी भ्रम से बचने के लिए हमारी परियोजना निर्देशिका के बाहर कहीं कहूंगा, और हमारे चमकदार नए पैकेज का उपयोग करने का प्रयास करूंगा:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hellostackoverflow import hellostackoverflow
>>> hellostackoverflow.greeting()
'Hello Stack Overflow!'
अब जब हमने पैकेज इंस्टॉल और कार्यों की पुष्टि कर दी है, तो हम इसे PyPI पर अपलोड कर सकते हैं।
चूंकि हम अपने प्रयोगों के साथ लाइव रिपॉजिटरी को प्रदूषित नहीं करना चाहते हैं, हम परीक्षण रिपॉजिटरी के लिए एक खाता बनाते हैं , और twine
अपलोड प्रक्रिया के लिए स्थापित करते हैं:
pip install twine
अब हम लगभग वहाँ हैं, हमारे द्वारा बनाए गए खाते के साथ हम केवल twine
अपना पैकेज अपलोड करने के लिए कहते हैं, यह हमारे क्रेडेंशियल्स के लिए पूछेगा और हमारे पैकेज को निर्दिष्ट रिपॉजिटरी में अपलोड करेगा:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
हम अब PyPI टेस्ट रिपॉजिटरी पर अपने खाते में लॉग इन कर सकते हैं और अपने नए अपलोड किए गए पैकेज पर थोड़ी देर के लिए चमत्कार कर सकते हैं, और फिर इसका उपयोग करके इसे पकड़ सकते हैं pip
:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
जैसा कि हम देख सकते हैं, मूल प्रक्रिया बहुत जटिल नहीं है। जैसा कि मैंने पहले कहा था, यहाँ इसे कवर करने की तुलना में बहुत अधिक है, इसलिए आगे बढ़ें और अधिक गहन विवरण के लिए ट्यूटोरियल पढ़ें ।