பைதான் மற்றும் பாஷ் நண்பர்களை உருவாக்குதல்: ஸ்மார்ட்-என்வி மற்றும் பைதான்-ஷெல் நூலகங்கள்

அனைவருக்கும் நல்ல நாள்.

இன்று, மென்பொருள் தயாரிப்புகளை உருவாக்குவது மட்டுமல்லாமல், அவற்றின் உள்கட்டமைப்பையும் வழங்கும் துறையில் பைதான் அதிகம் பயன்படுத்தப்படும் மொழிகளில் ஒன்றாகும். இதன் விளைவாக, பல டெவொப்கள், தங்கள் விருப்பத்தினாலோ அல்லது அதற்கு எதிராகவோ, நல்ல பழைய பாஷ் ஸ்கிரிப்டுகளுக்கு துணையாகப் பிற்காலத்தில் பயன்படுத்த புதிய மொழியைக் கற்றுக்கொள்ள வேண்டியிருந்தது. இருப்பினும், Bash மற்றும் Python குறியீடுகளை எழுதுவதற்கு வெவ்வேறு அணுகுமுறைகளை வழங்குகின்றன மற்றும் சில அம்சங்களைக் கொண்டுள்ளன, அதாவது பாஷ் ஸ்கிரிப்ட்களை "பாம்பு மொழிக்கு" மாற்றுவது சில சமயங்களில் ஒரு திறமையான மற்றும் அற்பமான பணியிலிருந்து வெகு தொலைவில் உள்ளது.

டெவொப்களுக்கு வாழ்க்கையை எளிதாக்க, பைத்தானில் பல பயனுள்ள நூலகங்கள் மற்றும் பயன்பாடுகள் உருவாக்கப்பட்டு தொடர்ந்து உருவாக்கப்படுகின்றன. இந்த இடுகையின் ஆசிரியரால் உருவாக்கப்பட்ட இரண்டு புதிய நூலகங்களை இந்தக் கட்டுரை விவரிக்கிறது - ஸ்மார்ட்-என்வி и மலைப்பாம்பு-ஓடு - மற்றும் பைத்தானுடன் பணிபுரிவதில் உள்ள சிக்கல்களுக்கு அதிக கவனம் செலுத்த வேண்டிய அவசியத்திலிருந்து டெவொப்ஸை விடுவிக்க வடிவமைக்கப்பட்டுள்ளது, மேலும் சுவாரஸ்யமான பணிகளுக்கு இடமளிக்கிறது. நூலகங்களின் செயல்பாட்டின் நோக்கம் சுற்றுச்சூழல் மாறிகள் மற்றும் வெளிப்புற பயன்பாடுகளைத் தொடங்குதல்.

ஆர்வமுள்ளவர்கள், பூனையைப் பார்க்கவும்.

புதிய "சைக்கிள்"?

சாதாரண செயல்பாடுகளுக்கு புதிய தொகுப்புகளை ஏன் உருவாக்க வேண்டும் என்று தோன்றுகிறது. os.environ மற்றும் subprocess.<முறை அல்லது உங்கள் விருப்பத்தின் வகுப்பு> நேரடியாகப் பயன்படுத்துவதிலிருந்து உங்களைத் தடுப்பது எது?

ஒவ்வொரு நூலகத்திற்கும் தனித்தனியாக ஆதாரங்களை வழங்குவேன்.

ஸ்மார்ட்-என்வி நூலகம்

உங்கள் சொந்த மூளையை எழுதுவதற்கு முன், ஆன்லைனில் சென்று ஆயத்த தீர்வுகளைத் தேடுவது பயனுள்ளது. நிச்சயமாக, உங்களுக்குத் தேவையானதைக் கண்டுபிடிக்காத ஆபத்து உள்ளது, ஆனால் இது ஒரு "காப்பீட்டு நிகழ்வு". ஒரு விதியாக, இந்த அணுகுமுறை வேலை செய்கிறது மற்றும் நிறைய நேரத்தையும் முயற்சியையும் மிச்சப்படுத்துகிறது.

முடிவுகளின் படி தேடல் பின்வருவது தெரியவந்தது:

  • உண்மையில் os.environ க்கு அழைப்புகளை மூடும் தொகுப்புகள் உள்ளன, ஆனால் அதே நேரத்தில் கவனத்தை சிதறடிக்கும் செயல்கள் (ஒரு வகுப்பின் நிகழ்வை உருவாக்குதல், அழைப்புகளில் சிறப்பு அளவுருக்கள் போன்றவை) தேவைப்படுகின்றன;
  • நல்ல தொகுப்புகள் உள்ளன, இருப்பினும், அவை கண்டிப்பாக ஒரு குறிப்பிட்ட சுற்றுச்சூழலுடன் (முக்கியமாக ஜாங்கோ போன்ற வலை கட்டமைப்புகள்) பிணைக்கப்பட்டுள்ளன, எனவே அவை கோப்பு இல்லாமல் உலகளாவியவை அல்ல;
  • புதிதாக ஏதாவது செய்ய அரிய முயற்சிகள் உள்ளன. உதாரணத்திற்கு, தட்டச்சு சேர்க்க மற்றும் போன்ற முறைகளை அழைப்பதன் மூலம் மாறி மதிப்புகளை வெளிப்படையாக அலசவும்
    get_<typename>(var_name)

    அல்லது இங்கே மேலும் ஒரு தீர்வுஇருப்பினும், இது இப்போது அவமானப்படுத்தப்பட்ட பைதான் 2 ஐ ஆதரிக்கவில்லை (இருந்தாலும் அதிகாரப்பூர்வ RIP, எழுதப்பட்ட குறியீடு மற்றும் முழு சுற்றுச்சூழல் அமைப்புகளின் மலைகள் இன்னும் உள்ளன);

  • சில அறியப்படாத காரணங்களுக்காக, அப்ஸ்ட்ரீம் PyPI இல் முடிவடைந்து, புதிய தொகுப்புகளின் பெயரிடுவதில் சிக்கல்களை மட்டுமே உருவாக்கும் பள்ளி-மாணவர் கைவினைப்பொருட்கள் உள்ளன (குறிப்பாக, "ஸ்மார்ட்-என்வி" என்ற பெயர் அவசியமான நடவடிக்கையாகும்).

இந்த பட்டியல் நீண்ட காலத்திற்கு தொடரலாம். இருப்பினும், வசதியான மற்றும் உலகளாவிய ஒன்றை உருவாக்கும் யோசனையைப் பற்றி என்னை உற்சாகப்படுத்த மேற்கண்ட புள்ளிகள் போதுமானதாக இருந்தன.

smart-env எழுதுவதற்கு முன் அமைக்கப்பட்ட தேவைகள்:

  • மிகவும் எளிமையான பயன்பாட்டுத் திட்டம்
  • எளிதாக உள்ளமைக்கக்கூடிய தரவு தட்டச்சு ஆதரவு
  • பைதான் 2.7 இணக்கமானது
  • சோதனைகள் மூலம் நல்ல குறியீடு கவரேஜ்

இறுதியில், இவை அனைத்தும் உணரப்பட்டன. பயன்பாட்டின் எடுத்துக்காட்டு இங்கே:

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

எடுத்துக்காட்டில் இருந்து நீங்கள் பார்க்க முடியும் என, ஒரு புதிய வகுப்பில் பணிபுரிய, நீங்கள் அதை இறக்குமதி செய்ய வேண்டும் (நீங்கள் ஒரு நிகழ்வை உருவாக்கத் தேவையில்லை - கூடுதல் செயலைக் கழித்தல்). எந்தவொரு சூழல் மாறிக்கான அணுகலும் ENV வகுப்பின் மாறியாகக் குறிப்பிடுவதன் மூலம் அடையப்படுகிறது, இது உண்மையில், இந்த வகுப்பை சொந்த கணினி சூழலுக்கான உள்ளுணர்வு ரேப்பராக ஆக்குகிறது, அதே நேரத்தில் கிட்டத்தட்ட எந்த கணினிக்கும் சாத்தியமான உள்ளமைவு பொருளாக மாற்றுகிறது ( இதேபோன்ற அணுகுமுறை, எடுத்துக்காட்டாக, ஜாங்கோவில் அடையப்படுகிறது, அங்கு மட்டுமே உள்ளமைவு பொருள் அமைப்புகள் தொகுதி/தொகுப்பு ஆகும்).

தானியங்கி தட்டச்சு ஆதரவு பயன்முறையை இயக்குவது/முடக்குவது இரண்டு முறைகளைப் பயன்படுத்தி அடையப்படுகிறது - enable_automatic_type_cast() மற்றும் disable_automatic_type_cast(). சூழல் மாறியில் வரிசைப்படுத்தப்பட்ட JSON போன்ற பொருள் இருந்தால் அல்லது ஒரு பூலியன் மாறிலி இருந்தால் இது வசதியாக இருக்கும். ஆனால் இப்போது சரங்களை வெளிப்படையாக மாற்ற வேண்டிய அவசியமில்லை - தேவையான பெரும்பாலான செயல்கள் ஏற்கனவே நூலகத்தின் ஆழத்தில் பதிக்கப்பட்டுள்ளன, மேலும் அவை செயல்பட ஒரு சமிக்ஞைக்காக காத்திருக்கின்றன. 🙂 பொதுவாக, தட்டச்சு செய்வது வெளிப்படைத்தன்மையுடன் செயல்படுகிறது மற்றும் கிடைக்கக்கூடிய அனைத்து உள்ளமைக்கப்பட்ட தரவு வகைகளையும் ஆதரிக்கிறது (ஃப்ரோஸென்செட், காம்ப்ளக்ஸ் மற்றும் பைட்டுகள் சோதிக்கப்படவில்லை).

பைதான் 2 ஐ ஆதரிப்பதற்கான தேவை கிட்டத்தட்ட எந்த தியாகமும் இல்லாமல் செயல்படுத்தப்பட்டது (தட்டச்சு செய்வதை கைவிடுதல் மற்றும் பைதான் 3 இன் சமீபத்திய பதிப்புகளின் சில “சர்க்கரை மிட்டாய்கள்”), குறிப்பாக, எங்கும் நிறைந்த ஆறு (மெட்டாகிளாஸ்களைப் பயன்படுத்துவதில் உள்ள சிக்கல்களைத் தீர்க்க) )

ஆனால் சில கட்டுப்பாடுகள் உள்ளன:

  • பைதான் 3 ஆதரவு என்பது பதிப்பு 3.5 மற்றும் அதற்கு மேற்பட்டதைக் குறிக்கிறது (உங்கள் திட்டத்தில் அவற்றின் இருப்பு சோம்பேறித்தனம் அல்லது மேம்பாடுகளின் தேவையின்மையின் விளைவாகும், ஏனெனில் நீங்கள் இன்னும் 3.4 இல் இருப்பதற்கான ஒரு புறநிலை காரணத்தைக் கண்டுபிடிப்பது கடினம்);
  • பைதான் 2.7 இல், லைப்ரரி செட் லிட்டரேல்களின் டீரியலைசேஷன் ஆதரிக்கவில்லை. விளக்கம் இங்கே. ஆனால், யாரேனும் அதை செயல்படுத்த விரும்பினால், உங்களை வரவேற்கிறோம் :);

பாகுபடுத்தும் பிழைகள் ஏற்பட்டால் நூலகத்தில் விதிவிலக்கு பொறிமுறையும் உள்ளது. கிடைக்கக்கூடிய எந்த பகுப்பாய்விகளாலும் சரத்தை அங்கீகரிக்க முடியவில்லை என்றால், மதிப்பு ஒரு சரமாகவே இருக்கும் (மாறாக, பாஷில் மாறிகள் எவ்வாறு செயல்படுகின்றன என்பதற்கான வழக்கமான தர்க்கத்துடன் வசதி மற்றும் பின்தங்கிய பொருந்தக்கூடிய காரணங்களுக்காக).

python-shell நூலகம்

இப்போது நான் இரண்டாவது நூலகத்தைப் பற்றி உங்களுக்குச் சொல்கிறேன் (தற்போதுள்ள ஒப்புமைகளின் குறைபாடுகளின் விளக்கத்தை நான் தவிர்க்கிறேன் - இது ஸ்மார்ட்-என்வி. அனலாக்ஸுக்கு விவரிக்கப்பட்டுள்ளதைப் போன்றது - இங்கே и இங்கே).

பொதுவாக, செயல்படுத்தும் யோசனையும் அதற்கான தேவைகளும் ஸ்மார்ட்-என்விக்கு விவரிக்கப்பட்டுள்ளதைப் போலவே இருக்கும், உதாரணத்திலிருந்து பார்க்க முடியும்:

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

யோசனை இதுதான்:

  1. பைதான் உலகில் பாஷைக் குறிக்கும் ஒற்றை வகுப்பு;
  2. ஒவ்வொரு பாஷ் கட்டளையும் ஷெல் வகுப்பின் செயல்பாடாக அழைக்கப்படுகிறது;
  3. ஒவ்வொரு செயல்பாட்டு அழைப்பிற்கான அளவுருக்கள் பின்னர் தொடர்புடைய Bash கட்டளை அழைப்பிற்கு அனுப்பப்படும்;
  4. ஒவ்வொரு கட்டளையும் "இங்கே மற்றும் இப்போது" என்று அழைக்கப்படும் தருணத்தில் செயல்படுத்தப்படுகிறது, அதாவது. ஒத்திசைவான அணுகுமுறை செயல்படுகிறது;
  5. stdout இல் ஒரு கட்டளையின் வெளியீட்டையும் அதன் திரும்பக் குறியீட்டையும் அணுக முடியும்;
  6. கட்டளை கணினியில் இல்லை என்றால், ஒரு விதிவிலக்கு தூக்கி எறியப்படும்.

smart-env ஐப் போலவே, Python 2 க்கும் ஆதரவு உள்ளது (இன்னும் இன்னும் கொஞ்சம் தியாக இரத்தம் தேவைப்பட்டாலும்) மற்றும் Python 3.0-3.4 க்கு ஆதரவு இல்லை.

நூலக மேம்பாட்டுத் திட்டங்கள்

நீங்கள் இப்போது நூலகங்களைப் பயன்படுத்தலாம்: இரண்டும் அதிகாரப்பூர்வ PyPI இல் இடுகையிடப்பட்டுள்ளன. ஆதாரங்கள் கிதுப்பில் கிடைக்கின்றன (கீழே காண்க).

ஆர்வமுள்ளவர்களிடமிருந்து சேகரிக்கப்பட்ட கருத்துக்களை கணக்கில் எடுத்துக்கொண்டு இரண்டு நூலகங்களும் உருவாக்கப்படும். மேலும், ஸ்மார்ட்-என்வியில் பல்வேறு புதிய அம்சங்களைக் கொண்டு வருவது கடினமாக இருந்தால், பைதான்-ஷெல்லில் நிச்சயமாக வேறு ஏதாவது சேர்க்க வேண்டும்:

  • தடுக்காத அழைப்புகளுக்கான ஆதரவு;
  • குழுவுடன் ஊடாடும் தொடர்பு சாத்தியம் (stdin உடன் பணிபுரிதல்);
  • புதிய பண்புகளைச் சேர்த்தல் (எடுத்துக்காட்டாக, stderr இலிருந்து வெளியீட்டைப் பெறுவதற்கான சொத்து);
  • கிடைக்கக்கூடிய கட்டளைகளின் கோப்பகத்தை செயல்படுத்துதல் (dir() செயல்பாட்டுடன் பயன்படுத்த);
  • மற்றும் பல.

குறிப்புகள்

  1. ஸ்மார்ட்-என்வி நூலகம்: கிட்ஹப் и PyPI
  2. python-shell நூலகம்: கிட்ஹப் и PyPI
  3. டெலிகிராம் சேனல் நூலக மேம்படுத்தல்கள்

UPD 23.02.2020/XNUMX/XNUMX:
* களஞ்சியங்கள் நகர்த்தப்பட்டன, தொடர்புடைய இணைப்புகள் புதுப்பிக்கப்பட்டன
* பைதான்-ஷெல்==1.0.1 பதிப்பு 29.02.2020/XNUMX/XNUMX அன்று வெளியிடத் தயாராகிறது. கட்டளை தானியங்குநிரப்புதல் மற்றும் dir(Shell) கட்டளைக்கான ஆதரவு, தவறான பைதான் அடையாளங்காட்டியுடன் கட்டளைகளை இயக்குதல் மற்றும் பிழைத் திருத்தங்கள் ஆகியவை மாற்றங்களில் அடங்கும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்