नोट: नीचे दिया गया समाधान केवल स्रोत वितरण ज़िप या टारबॉल स्थापित करते समय, या स्रोत पेड़ से संपादन योग्य मोड में स्थापित करने पर काम करता है। बाइनरी व्हील ( ) से इंस्टॉल करने पर यह काम नहीं करेगा.whl
यह समाधान अधिक पारदर्शी है:
आप कुछ अतिरिक्त करेंगे setup.py
और अतिरिक्त फ़ाइल की कोई आवश्यकता नहीं है।
इसके अलावा आपको दो अलग-अलग पोस्ट-इंस्टॉलेशन पर विचार करने की आवश्यकता है; एक विकास / संपादन मोड के लिए और दूसरा स्थापित मोड के लिए।
इन दो वर्गों को अपनी पोस्ट- स्क्रिप्ट में शामिल करेंsetup.py
:
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
class PostDevelopCommand(develop):
"""Post-installation for development mode."""
def run(self):
develop.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
class PostInstallCommand(install):
"""Post-installation for installation mode."""
def run(self):
install.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
और इसमें कार्य करने के लिए cmdclass
तर्क डालें :setup()
setup.py
setup(
...
cmdclass={
'develop': PostDevelopCommand,
'install': PostInstallCommand,
},
...
)
आप स्थापना के दौरान शेल कमांड भी कह सकते हैं, जैसे इस उदाहरण में जो पूर्व-इंस्टालेशन तैयारी करता है:
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
from subprocess import check_call
class PreDevelopCommand(develop):
"""Pre-installation for development mode."""
def run(self):
check_call("apt-get install this-package".split())
develop.run(self)
class PreInstallCommand(install):
"""Pre-installation for installation mode."""
def run(self):
check_call("apt-get install this-package".split())
install.run(self)
setup(
...
PS वहाँ कोई पूर्व स्थापित प्रविष्टि बिंदुओं पर उपलब्ध नहीं हैं। इस चर्चा को पढ़ें यदि आप सोच रहे हैं कि कोई भी क्यों नहीं है।