ಪೈಥಾನ್ ಮತ್ತು ಬ್ಯಾಷ್ ಸ್ನೇಹವನ್ನು ಮಾಡುವುದು: ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ ಮತ್ತು ಪೈಥಾನ್-ಶೆಲ್ ಲೈಬ್ರರಿಗಳು

ಎಲ್ಲರಿಗೂ ಶುಭದಿನ.

ಇಂದು, ಪೈಥಾನ್ ಸಾಫ್ಟ್‌ವೇರ್ ಉತ್ಪನ್ನಗಳನ್ನು ಸ್ವತಃ ರಚಿಸುವ ಕ್ಷೇತ್ರದಲ್ಲಿ ಹೆಚ್ಚು ಬಳಸಿದ ಭಾಷೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಆದರೆ ಅವುಗಳ ಮೂಲಸೌಕರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಅನೇಕ ಡೆವೊಪ್‌ಗಳು, ಅವರ ಇಚ್ಛೆಯಿಂದ ಅಥವಾ ವಿರುದ್ಧವಾಗಿರಲಿ, ಉತ್ತಮ ಹಳೆಯ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿಗೆ ಪೂರಕವಾಗಿ ನಂತರದ ಬಳಕೆಗಾಗಿ ಹೊಸ ಭಾಷೆಯನ್ನು ಕಲಿಯಬೇಕಾಯಿತು. ಆದಾಗ್ಯೂ, ಬ್ಯಾಷ್ ಮತ್ತು ಪೈಥಾನ್ ಕೋಡ್ ಬರೆಯಲು ವಿಭಿನ್ನ ವಿಧಾನಗಳನ್ನು ಪ್ರತಿಪಾದಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊಂದಿದೆ, ಅಂದರೆ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು "ಹಾವಿನ ಭಾಷೆ" ಗೆ ಪೋರ್ಟ್ ಮಾಡುವುದು ಕೆಲವೊಮ್ಮೆ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಕ್ಷುಲ್ಲಕ ಕೆಲಸದಿಂದ ದೂರವಿರುತ್ತದೆ.

ಡೆವೊಪ್‌ಗಳಿಗೆ ಜೀವನವನ್ನು ಸುಲಭಗೊಳಿಸಲು, ಪೈಥಾನ್‌ನಲ್ಲಿ ಅನೇಕ ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಉಪಯುಕ್ತತೆಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ರಚಿಸಲಾಗುತ್ತಿದೆ. ಈ ಲೇಖನವು ಈ ಪೋಸ್ಟ್‌ನ ಲೇಖಕರಿಂದ ರಚಿಸಲಾದ ಎರಡು ಹೊಸ ಗ್ರಂಥಾಲಯಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ - ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ и ಹೆಬ್ಬಾವು-ಚಿಪ್ಪು - ಮತ್ತು ಪೈಥಾನ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಜಟಿಲತೆಗಳಿಗೆ ಹೆಚ್ಚಿನ ಗಮನವನ್ನು ನೀಡುವ ಅಗತ್ಯದಿಂದ devops ಅನ್ನು ನಿವಾರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕ ಕಾರ್ಯಗಳಿಗೆ ಸ್ಥಳಾವಕಾಶವನ್ನು ನೀಡುತ್ತದೆ. ಗ್ರಂಥಾಲಯಗಳ ಚಟುವಟಿಕೆಯ ವ್ಯಾಪ್ತಿಯು ಪರಿಸರ ಅಸ್ಥಿರ ಮತ್ತು ಬಾಹ್ಯ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದು.

ಆಸಕ್ತಿ ಇರುವವರು, ದಯವಿಟ್ಟು ಬೆಕ್ಕು ನೋಡಿ.

ಹೊಸ "ಬೈಸಿಕಲ್"?

ಸಾಮಾನ್ಯ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ಹೊಸ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಏಕೆ ರಚಿಸಬೇಕು ಎಂದು ತೋರುತ್ತದೆ? os.environ ಮತ್ತು ಉಪಪ್ರಕ್ರಿಯೆ.<ವಿಧಾನ ಅಥವಾ ನಿಮ್ಮ ಆಯ್ಕೆಯ ವರ್ಗ> ಅನ್ನು ನೇರವಾಗಿ ಬಳಸುವುದರಿಂದ ಯಾವುದು ನಿಮ್ಮನ್ನು ತಡೆಯುತ್ತದೆ?

ಪ್ರತಿ ಗ್ರಂಥಾಲಯಗಳ ಪರವಾಗಿ ನಾನು ಪ್ರತ್ಯೇಕವಾಗಿ ಸಾಕ್ಷ್ಯವನ್ನು ಒದಗಿಸುತ್ತೇನೆ.

ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ ಲೈಬ್ರರಿ

ನಿಮ್ಮ ಸ್ವಂತ ಮೆದುಳಿನ ಕೂಸು ಬರೆಯುವ ಮೊದಲು, ಆನ್‌ಲೈನ್‌ಗೆ ಹೋಗಲು ಮತ್ತು ಸಿದ್ಧ ಪರಿಹಾರಗಳನ್ನು ಹುಡುಕಲು ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ. ಸಹಜವಾಗಿ, ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ಕಂಡುಹಿಡಿಯದಿರುವ ಅಪಾಯವಿದೆ, ಆದರೆ ಇದು "ವಿಮಾ ಘಟನೆ" ಆಗಿದೆ. ನಿಯಮದಂತೆ, ಈ ವಿಧಾನವು ಕೆಲಸ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸಾಕಷ್ಟು ಸಮಯ ಮತ್ತು ಶ್ರಮವನ್ನು ಉಳಿಸುತ್ತದೆ.

ಫಲಿತಾಂಶಗಳ ಪ್ರಕಾರ ಹುಡುಕಿ Kannada ಕೆಳಗಿನವುಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲಾಗಿದೆ:

  • ವಾಸ್ತವವಾಗಿ os.environ ಗೆ ಕರೆಗಳನ್ನು ಸುತ್ತುವ ಪ್ಯಾಕೇಜುಗಳಿವೆ, ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ ಗಮನವನ್ನು ಸೆಳೆಯುವ ಕ್ರಿಯೆಗಳ ಗುಂಪಿಗೆ ಅಗತ್ಯವಿರುತ್ತದೆ (ಒಂದು ವರ್ಗದ ನಿದರ್ಶನವನ್ನು ರಚಿಸುವುದು, ಕರೆಗಳಲ್ಲಿ ವಿಶೇಷ ನಿಯತಾಂಕಗಳು, ಇತ್ಯಾದಿ);
  • ಉತ್ತಮ ಪ್ಯಾಕೇಜುಗಳಿವೆ, ಆದಾಗ್ಯೂ, ನಿರ್ದಿಷ್ಟ ಪರಿಸರ ವ್ಯವಸ್ಥೆಗೆ (ಮುಖ್ಯವಾಗಿ ಜಾಂಗೊದಂತಹ ವೆಬ್ ಚೌಕಟ್ಟುಗಳು) ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಬಂಧಿಸಲಾಗಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಫೈಲ್ ಇಲ್ಲದೆ ಸಾರ್ವತ್ರಿಕವಾಗಿರುವುದಿಲ್ಲ;
  • ಹೊಸದನ್ನು ಮಾಡುವ ಅಪರೂಪದ ಪ್ರಯತ್ನಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, ಟೈಪಿಂಗ್ ಸೇರಿಸಿ ಮತ್ತು ಅಂತಹ ವಿಧಾನಗಳನ್ನು ಕರೆಯುವ ಮೂಲಕ ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಪಾರ್ಸ್ ಮಾಡಿ
    get_<typename>(var_name)

    ಅಥವಾ ಇಲ್ಲಿ ಇನ್ನೂ ಒಂದು ಪರಿಹಾರ, ಆದಾಗ್ಯೂ, ಈಗ ಅವಮಾನಿತವಾಗಿರುವ ಪೈಥಾನ್ 2 ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ (ಅದರ ಹೊರತಾಗಿಯೂ ಅಧಿಕೃತ RIP, ಲಿಖಿತ ಕೋಡ್ ಮತ್ತು ಸಂಪೂರ್ಣ ಪರಿಸರ ವ್ಯವಸ್ಥೆಗಳ ಪರ್ವತಗಳು ಇನ್ನೂ ಇವೆ);

  • ಶಾಲಾ-ವಿದ್ಯಾರ್ಥಿ ಕರಕುಶಲತೆಗಳಿವೆ, ಕೆಲವು ಅಜ್ಞಾತ ಕಾರಣಕ್ಕಾಗಿ, ಅಪ್‌ಸ್ಟ್ರೀಮ್ PyPI ನಲ್ಲಿ ಕೊನೆಗೊಂಡಿತು ಮತ್ತು ಹೊಸ ಪ್ಯಾಕೇಜ್‌ಗಳ ಹೆಸರಿಸುವಿಕೆಯೊಂದಿಗೆ ಮಾತ್ರ ಸಮಸ್ಯೆಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ (ನಿರ್ದಿಷ್ಟವಾಗಿ, "ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ" ಎಂಬ ಹೆಸರು ಅಗತ್ಯ ಅಳತೆಯಾಗಿದೆ).

ಮತ್ತು ಈ ಪಟ್ಟಿಯು ದೀರ್ಘಕಾಲದವರೆಗೆ ಹೋಗಬಹುದು. ಹೇಗಾದರೂ, ಅನುಕೂಲಕರ ಮತ್ತು ಸಾರ್ವತ್ರಿಕವಾದದ್ದನ್ನು ಮಾಡುವ ಕಲ್ಪನೆಯ ಬಗ್ಗೆ ನನಗೆ ಉತ್ಸುಕನಾಗಲು ಮೇಲಿನ ಅಂಶಗಳು ಸಾಕು.

ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ ಬರೆಯುವ ಮೊದಲು ಹೊಂದಿಸಲಾದ ಅಗತ್ಯತೆಗಳು:

  • ಅತ್ಯಂತ ಸರಳ ಬಳಕೆಯ ಯೋಜನೆ
  • ಸುಲಭವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದಾದ ಡೇಟಾ ಟೈಪಿಂಗ್ ಬೆಂಬಲ
  • ಪೈಥಾನ್ 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 ರಲ್ಲಿ, ಲೈಬ್ರರಿಯು ಸೆಟ್ ಲಿಟರಲ್‌ಗಳ ಡೀರಿಯಲೈಸೇಶನ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ವಿವರಣೆ ಇಲ್ಲಿ. ಆದರೆ ಯಾರಾದರೂ ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಯಸಿದರೆ, ನಿಮಗೆ ಸ್ವಾಗತ :);

ಪಾರ್ಸಿಂಗ್ ದೋಷಗಳ ಸಂದರ್ಭದಲ್ಲಿ ಲೈಬ್ರರಿಯು ವಿನಾಯಿತಿ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸಹ ಹೊಂದಿದೆ. ಲಭ್ಯವಿರುವ ಯಾವುದೇ ವಿಶ್ಲೇಷಕಗಳಿಂದ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಗುರುತಿಸಲಾಗದಿದ್ದರೆ, ಮೌಲ್ಯವು ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಉಳಿಯುತ್ತದೆ (ಬದಲಿಗೆ, ಅನುಕೂಲಕ್ಕಾಗಿ ಮತ್ತು ಬ್ಯಾಷ್‌ನಲ್ಲಿ ಅಸ್ಥಿರಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬ ಸಾಮಾನ್ಯ ತರ್ಕದೊಂದಿಗೆ ಹಿಂದುಳಿದ ಹೊಂದಾಣಿಕೆಯ ಕಾರಣಗಳಿಗಾಗಿ).

ಪೈಥಾನ್-ಶೆಲ್ ಲೈಬ್ರರಿ

ಈಗ ನಾನು ಎರಡನೇ ಲೈಬ್ರರಿಯ ಬಗ್ಗೆ ಹೇಳುತ್ತೇನೆ (ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅನಲಾಗ್‌ಗಳ ನ್ಯೂನತೆಗಳ ವಿವರಣೆಯನ್ನು ನಾನು ಬಿಟ್ಟುಬಿಡುತ್ತೇನೆ - ಇದು ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ. ಅನಲಾಗ್‌ಗಳಿಗಾಗಿ ವಿವರಿಸಿದಂತೆಯೇ ಇರುತ್ತದೆ - ಇಲ್ಲಿ и ಇಲ್ಲಿ).

ಸಾಮಾನ್ಯವಾಗಿ, ಅನುಷ್ಠಾನದ ಕಲ್ಪನೆ ಮತ್ತು ಅದರ ಅವಶ್ಯಕತೆಗಳು ಸ್ಮಾರ್ಟ್-ಎನ್ವಿಗಾಗಿ ವಿವರಿಸಿದಂತೆಯೇ ಇರುತ್ತವೆ, ಉದಾಹರಣೆಯಿಂದ ನೋಡಬಹುದು:

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. ಪ್ರತಿ ಫಂಕ್ಷನ್ ಕರೆಗೆ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ನಂತರ ಅನುಗುಣವಾದ ಬ್ಯಾಷ್ ಕಮಾಂಡ್ ಕರೆಗೆ ರವಾನಿಸಲಾಗುತ್ತದೆ;
  4. ಪ್ರತಿಯೊಂದು ಆಜ್ಞೆಯನ್ನು "ಇಲ್ಲಿ ಮತ್ತು ಈಗ" ಎಂದು ಕರೆಯಲ್ಪಡುವ ಕ್ಷಣದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಅಂದರೆ. ಸಿಂಕ್ರೊನಸ್ ವಿಧಾನವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ;
  5. stdout ನಲ್ಲಿ ಆಜ್ಞೆಯ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿದೆ, ಹಾಗೆಯೇ ಅದರ ರಿಟರ್ನ್ ಕೋಡ್;
  6. ಆಜ್ಞೆಯು ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ, ಒಂದು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಲಾಗುತ್ತದೆ.

Smart-env ನಂತೆ, ಪೈಥಾನ್ 2 ಗೆ ಬೆಂಬಲವಿದೆ (ಸ್ವಲ್ಪ ಹೆಚ್ಚು ತ್ಯಾಗದ ರಕ್ತದ ಅಗತ್ಯವಿದ್ದರೂ) ಮತ್ತು ಪೈಥಾನ್ 3.0-3.4 ಗೆ ಯಾವುದೇ ಬೆಂಬಲವಿಲ್ಲ.

ಗ್ರಂಥಾಲಯ ಅಭಿವೃದ್ಧಿ ಯೋಜನೆಗಳು

ನೀವು ಈಗ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಬಹುದು: ಎರಡನ್ನೂ ಅಧಿಕೃತ PyPI ನಲ್ಲಿ ಪೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ. Github ನಲ್ಲಿ ಮೂಲಗಳು ಲಭ್ಯವಿವೆ (ಕೆಳಗೆ ನೋಡಿ).

ಆಸಕ್ತರಿಂದ ಸಂಗ್ರಹಿಸಿದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು ಎರಡೂ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುವುದು. ಮತ್ತು, ಸ್ಮಾರ್ಟ್-ಎನ್ವಿಯಲ್ಲಿ ವಿವಿಧ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಬರಲು ಕಷ್ಟವಾಗಿದ್ದರೆ, ಪೈಥಾನ್-ಶೆಲ್‌ನಲ್ಲಿ ಖಂಡಿತವಾಗಿಯೂ ಸೇರಿಸಲು ಏನಾದರೂ ಇರುತ್ತದೆ:

  • ನಿರ್ಬಂಧಿಸದ ಕರೆಗಳಿಗೆ ಬೆಂಬಲ;
  • ತಂಡದೊಂದಿಗೆ ಸಂವಾದಾತ್ಮಕ ಸಂವಹನ ಸಾಧ್ಯತೆ (stdin ಜೊತೆ ಕೆಲಸ);
  • ಹೊಸ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸುವುದು (ಉದಾಹರಣೆಗೆ, stderr ನಿಂದ ಔಟ್ಪುಟ್ ಸ್ವೀಕರಿಸಲು ಆಸ್ತಿ);
  • ಲಭ್ಯವಿರುವ ಆಜ್ಞೆಗಳ ಡೈರೆಕ್ಟರಿಯ ಅನುಷ್ಠಾನ (dir() ಕಾರ್ಯದೊಂದಿಗೆ ಬಳಕೆಗಾಗಿ);
  • ಮತ್ತು ಹೀಗೆ.

ಉಲ್ಲೇಖಗಳು

  1. ಸ್ಮಾರ್ಟ್-ಎನ್ವಿ ಲೈಬ್ರರಿ: github и ಪೈಪಿಐ
  2. ಪೈಥಾನ್-ಶೆಲ್ ಲೈಬ್ರರಿ: github и ಪೈಪಿಐ
  3. ಟೆಲಿಗ್ರಾಮ್ ಚಾನಲ್ ಲೈಬ್ರರಿ ನವೀಕರಣಗಳು

UPD 23.02.2020/XNUMX/XNUMX:
* ರೆಪೊಸಿಟರಿಗಳನ್ನು ಸರಿಸಲಾಗಿದೆ, ಅನುಗುಣವಾದ ಲಿಂಕ್‌ಗಳನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ
* ಪೈಥಾನ್-ಶೆಲ್ ==1.0.1 ಆವೃತ್ತಿಯನ್ನು 29.02.2020/XNUMX/XNUMX ರಂದು ಬಿಡುಗಡೆ ಮಾಡಲು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ. ಬದಲಾವಣೆಗಳು ಕಮಾಂಡ್ ಸ್ವಯಂಪೂರ್ಣತೆ ಮತ್ತು dir(Shell) ಕಮಾಂಡ್‌ಗೆ ಬೆಂಬಲ, ಅಮಾನ್ಯ ಪೈಥಾನ್ ಐಡೆಂಟಿಫೈಯರ್‌ನೊಂದಿಗೆ ರನ್ನಿಂಗ್ ಕಮಾಂಡ್‌ಗಳು ಮತ್ತು ದೋಷ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ