Python Language
setup.py
खोज…
पैरामीटर
पैरामीटर | प्रयोग |
---|---|
name | आपके वितरण का नाम। |
version | आपके वितरण का संस्करण स्ट्रिंग। |
packages | शामिल करने के लिए पायथन पैकेज (यानी, निर्देशिका युक्त मॉड्यूल) की सूची। इसे मैन्युअल रूप से निर्दिष्ट किया जा सकता है, लेकिन आमतौर पर इसके बजाय setuptools.find_packages() का उपयोग किया जाता है। |
py_modules | शीर्ष-स्तरीय पायथन मॉड्यूल की सूची (जो कि, एकल .py फाइलें) शामिल करने के लिए है। |
टिप्पणियों
अजगर पैकेजिंग पर अधिक जानकारी के लिए देखें:
आधिकारिक पैकेज लिखने के लिए एक पैकेजिंग उपयोगकर्ता गाइड है ।
Setup.py का उद्देश्य
सेटअप स्क्रिप्ट डिस्टुटिल्स का उपयोग करके मॉड्यूल के निर्माण, वितरण और स्थापित करने में सभी गतिविधि का केंद्र है। यह उद्देश्य सॉफ्टवेयर की सही स्थापना है।
यदि आप सब करना चाहते हैं एक फ़ाइल नामक एक मॉड्यूल को वितरित करना है, एक फ़ाइल foo.py में सम्मिलित है, तो आपकी सेटअप स्क्रिप्ट इस प्रकार हो सकती है:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
)
इस मॉड्यूल के लिए एक स्रोत वितरण बनाने के लिए, आप एक सेटअप स्क्रिप्ट, setup.py, उपरोक्त कोड युक्त, और एक टर्मिनल से इस कमांड को चलाने के लिए बनाएंगे:
python setup.py sdist
sdist आपके सेटअप स्क्रिप्ट setup.py, और अपने मॉड्यूल foo.py युक्त एक संग्रह फ़ाइल (जैसे, यूनिक्स पर टारबॉल, विंडोज पर ज़िप फ़ाइल) और आपका मॉड्यूल foo.py बनाएगा। संग्रह फ़ाइल को foo-1.0.tar.gz (या .zip) नाम दिया जाएगा, और एक निर्देशिका foo-1.0 में अनपैक किया जाएगा।
यदि कोई अंतिम उपयोगकर्ता आपके फू मॉड्यूल को स्थापित करना चाहता है, तो उसे केवल फू-1.0.tar.z डाउनलोड करना है (या .zip), इसे अनपैक करें, और foo-1.0 डायरेक्टरी से-रन करें
python setup.py install
अपने अजगर पैकेज में कमांड लाइन स्क्रिप्ट जोड़ना
अजगर पैकेज के अंदर कमांड लाइन स्क्रिप्ट आम हैं। आप अपने पैकेज को इस तरह से व्यवस्थित कर सकते हैं कि जब कोई उपयोगकर्ता पैकेज स्थापित करता है, तो स्क्रिप्ट उनके पथ पर उपलब्ध होगी।
यदि आपके पास greetings
पैकेज था जिसमें कमांड लाइन स्क्रिप्ट hello_world.py
।
greetings/
greetings/
__init__.py
hello_world.py
आप उस स्क्रिप्ट को चला सकते हैं:
python greetings/greetings/hello_world.py
हालाँकि अगर आप इसे ऐसे ही चलाना चाहेंगे:
hello_world.py
आप जोड़कर इस लक्ष्य को हासिल कर सकते हैं scripts
आपके लिए setup()
में setup.py
इस तरह:
from setuptools import setup
setup(
name='greetings',
scripts=['hello_world.py']
)
जब आप अभिवादन पैकेज स्थापित करते हैं, तो hello_world.py
आपके पथ में जुड़ जाएगा।
प्रवेश बिंदु जोड़ने के लिए एक और संभावना होगी:
entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}
इस तरह आपको बस इसे चलाना होगा:
greetings
Setup.py में स्रोत नियंत्रण मेटाडेटा का उपयोग करना
setuptools_scm
एक आधिकारिक रूप से धन्य पैकेज है जो आपके पैकेज की संस्करण संख्या निर्धारित करने के लिए Git या Mercurial मेटाडेटा का उपयोग कर सकता है, और इसमें शामिल करने के लिए पायथन पैकेज और पैकेज डेटा ढूंढ सकता है।
from setuptools import setup, find_packages
setup(
setup_requires=['setuptools_scm'],
use_scm_version=True,
packages=find_packages(),
include_package_data=True,
)
यह उदाहरण दोनों विशेषताओं का उपयोग करता है; संस्करण के लिए केवल SCM मेटाडेटा का उपयोग करने के लिए, कॉल को अपनी मैन्युअल पैकेज सूची के साथ find_packages()
बदलें, या केवल पैकेज खोजक का उपयोग करें, use_scm_version=True
निकालें।
स्थापना विकल्प जोड़ना
जैसा कि पिछले उदाहरणों में देखा गया है, इस लिपि का मूल उपयोग है:
python setup.py install
लेकिन और भी विकल्प हैं, जैसे पैकेज को स्थापित करना और कोड को बदलने और इसे फिर से स्थापित किए बिना परीक्षण करने की संभावना है। यह प्रयोग किया जाता है:
python setup.py develop
यदि आप Sphinx प्रलेखन या फोरट्रान कोड के निर्माण जैसे विशिष्ट कार्य करना चाहते हैं, तो आप इस तरह अपना खुद का विकल्प बना सकते हैं:
cmdclasses = dict()
class BuildSphinx(Command):
"""Build Sphinx documentation."""
description = 'Build Sphinx documentation'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
import sphinx
sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])
cmdclasses['build_sphinx'] = BuildSphinx
setup(
...
cmdclass=cmdclasses,
)
initialize_options
और finalize_options
run
फ़ंक्शन के पहले और बाद में निष्पादित किए जाएंगे क्योंकि उनके नाम से पता चलता है।
उसके बाद, आप अपने विकल्प पर कॉल कर पाएंगे:
python setup.py build_sphinx