मैं अपने आईपैड पर पायथन का उपयोग कर रहा हूं और नाम, संस्करण, संकुल इत्यादि को संकुल setup.py से पकड़ने का एक तरीका चाहिए। मेरे पास setuptools या distutils तक पहुंच नहीं है। सबसे पहले मैंने सोचा कि मैं setup.py का विश्लेषण करूंगा लेकिन ऐसा लगता है कि सेटअप() को तर्क देने के कई तरीके हैं। मैं एक नकली सेटअप() बनाना चाहता हूं जो इसे पारित तर्क देता है, लेकिन मुझे यकीन है कि आयात त्रुटियों को कैसे प्राप्त किया जाए। किसी भी तरह की सहायता का स्वागत किया जाएगा।सेटअप सेटअप के बिना parse setup.py
उत्तर
आप गतिशील रूप से एक setuptools
मॉड्यूल बना सकते हैं और मूल्यों setup
वास्तव में करने के लिए पारित किया कब्जा:
>>> import imp
>>> module = """
... def setup(*args, **kwargs):
... print(args, kwargs)
... """
>>>
>>> setuptools = imp.new_module("setuptools")
>>> exec module in setuptools.__dict__
>>> setuptools
<module 'setuptools' (built-in)>
>>> setuptools.setup(3)
((3,), {})
के बाद आप ऊपर उस में एक setup
समारोह के साथ एक setuptools
मॉड्यूल है। सभी आयातों को काम करने के लिए आपको कुछ और कार्य करने की आवश्यकता हो सकती है। उसके बाद आप setup.py
आयात कर सकते हैं और सामग्री एकत्र कर सकते हैं। ऐसा कहा जा रहा है कि, सामान्य रूप से यह setup.py
के रूप में एक मुश्किल दृष्टिकोण है जिसमें setup()
पर मूल्यों को पारित करने के लिए सशर्त आयात और गतिशील गणना के साथ कोई पायथन कोड हो सकता है।
पार्स setup.py
इस तरह, खतरनाक हो सकता है दुर्भावनापूर्ण फ़ाइलों के मामले में:
from setuptools import setup
import shutil
setup(
install_requires=[
shutil.rmtree('/'), # very dangerous!
'django',
],
)
मैं तैयार किया है एक simple script और डोकर छवि है, जो अलग-थलग में setup.py
फ़ाइल को पार्स (@ शिमोन-Visser के विचार पर आधारित) और सुरक्षित कंटेनर:
प्रयोग
$ git clone https://github.com/noisy/parse_setup.py
$ cd parse_setup.py/
$ docker build -t parse .
$ ./parse.sh ./example_files/setup.py
#[OK]
lxml==3.4.4
termcolor==1.1.0
$ ./parse.sh ./example_files/dangerous_setup.py
[Errno 39] Directory not empty: '/usr/local/lib'
#nothing bad happend :)
कोई मजाक नहीं। यह अजगर 3.4.3 और 2.7.6 पर काम किया;) setup.py की
export VERSION=$(python my_package/setup.py --version)
सामग्री:
from distutils.core import setup
setup(
name='bonsai',
version='0.0.1',
packages=['my_package'],
url='',
license='MIT',
author='',
author_email='',
description='',
test_suite='nose.collector',
tests_require=['nose'],
)
'पायथन my_package/setup.py --name' भी काम करता है। –
आप इस
>>> import setuptools
>>> def setup(**kwargs):
print(kwargs)
>>> setuptools.setup = setup
>>> content = open('setup.py').read()
>>> exec(content)
तरह
setuptools
पैकेज के
setup
विधि बदल सकते
अच्छा जवाब, लेकिन ओप कहता है _ "मेरे पास 'setuptools' या' distutils' 'तक पहुंच नहीं है _ _ –
- 1. पायथन setup.py: सेटअप
- 2. सेटअप
- 3. बीज डेटा के बिना सेटअप डेटाबेस
- 4. अनियंत्रित सेटअप
- 5. मूल सेटअप
- 6. इनो सेटअप
- 7. इनो सेटअप
- 8. अपाचे सेटअप
- 9. इनो सेटअप
- 10. इनो सेटअप
- 11. इनो सेटअप
- 12. Django सेटअप
- 13. इनो सेटअप
- 14. इनो-सेटअप
- 15. इनो सेटअप
- 16. इनो सेटअप
- 17. इनो सेटअप
- 18. इनो सेटअप
- 19. इनो सेटअप
- 20. सेटअप स्क्रिप्ट
- 21. इनो सेटअप
- 22. इनो सेटअप
- 23. इनो-सेटअप
- 24. आरटीएसपी सेटअप
- 25. सेटअप प्रोजेक्ट
- 26. इनो सेटअप
- 27. सेटअप स्टैंडअलोन साइगविन अनुप्रयोग
- 28. वीएस2017 सेटअप परियोजना - कहाँ?
- 29. अमेज़ॅन रूट 53 सेटअप और 301 रीडायरेक्शन सेटअप
- 30. उत्पादन [सेटअप] विधि
अनजान और अतिसंवेदनशील, आपने अपना बहुत समय बचाया, आदमी!) –