ΠΠΎΠ±Π°Ρ Π΄Π΅Π½ Π½Π° ΡΠΈΡΠ΅.
ΠΠ΅Π½Π΅Ρ, Python Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°ΡΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΈΡΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΡΡΠ° Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ, ΡΡΠΊΡ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΠΌΠ½ΠΎΠ³Ρ Π»ΡΡΠ΅, Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° Π΄Π°Π»ΠΈ ΠΏΠΎ Π½ΠΈΠ²Π½Π° Π²ΠΎΠ»ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ² ΡΠΎΠ°, ΠΌΠΎΡΠ°Π° Π΄Π° Π½Π°ΡΡΠ°Ρ Π½ΠΎΠ² ΡΠ°Π·ΠΈΠΊ Π·Π° ΠΏΠΎΠ΄ΠΎΡΠ½Π΅ΠΆΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠ΄Π°ΡΠΎΠΊ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ Π΄ΠΎΠ±ΡΠΈ Π±Π°Ρ ΡΠΊΡΠΈΠΏΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, Bash ΠΈ Python ΠΈΡΠΏΠΎΠ²Π΅Π΄Π°Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄ ΠΈ ΠΈΠΌΠ°Π°Ρ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Bash ΡΠΊΡΠΈΠΏΡΠΈΡΠ΅ Π½Π° βΠ·ΠΌΠΈΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊβ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΊΠ°ΠΊΠΎ ΠΎΠ±Π΅ΠΌΠ½Π° ΠΈ Π΄Π°Π»Π΅ΠΊΡ ΠΎΠ΄ ΡΡΠΈΠ²ΠΈΡΠ°Π»Π½Π° Π·Π°Π΄Π°ΡΠ°.
ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠ»Π΅ΡΠ½ΠΈ ΠΆΠΈΠ²ΠΎΡΠΎΡ Π½Π° devops, ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π°Π»Π°ΡΠΊΠΈ Π²ΠΎ Python ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°Π°Ρ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π°Ρ. ΠΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° ΠΎΠΏΠΈΡΡΠ²Π° Π΄Π²Π΅ Π½ΠΎΠ²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ Π°Π²ΡΠΎΡΠΎΡ Π½Π° ΠΎΠ²ΠΎΡ ΠΏΠΎΡΡ -
Π‘Π΅ΠΊΠΎΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½, Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΌΠ°ΡΠΊΠ°.
ΠΠΎΠ²ΠΈ βΠ²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ΠΈβ?
Π‘Π΅ ΡΠΈΠ½ΠΈ, Π·ΠΎΡΡΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π°Ρ Π½ΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΎΠ±ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ? Π¨ΡΠΎ Π²Π΅ ΡΠΏΡΠ΅ΡΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ os.environ ΠΈ subprocess.<ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΠ° ΠΏΠΎ Π²Π°Ρ ΠΈΠ·Π±ΠΎΡ>?
ΠΠ΅ Π΄Π°Π΄Π°ΠΌ Π΄ΠΎΠΊΠ°Π·ΠΈ Π²ΠΎ ΠΊΠΎΡΠΈΡΡ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½ΠΎ.
smart-env Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΡΠ΅Π΄ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΠΈΠ΄Π΅ΡΠ°, ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ Π΄Π° Π±Π°ΡΠ°ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΈ ΡΠΈΠ·ΠΈΠΊ Π΄Π° Π½Π΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΎΠ½Π° ΡΡΠΎ Π²ΠΈ ΡΡΠ΅Π±Π°, Π½ΠΎ ΠΎΠ²Π° Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ βΠΎΡΠΈΠ³ΡΡΠΈΡΠ΅Π»Π΅Π½ Π½Π°ΡΡΠ°Π½β. ΠΠ°ΠΊΠΎ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΠΈ Π·Π°ΡΡΠ΅Π΄ΡΠ²Π° ΠΌΠ½ΠΎΠ³Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π½Π°ΠΏΠΎΡ.
Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅
- ΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΊΠΎΠΈ Π²ΡΡΡΠ½ΠΎΡΡ Π³ΠΈ ΠΎΠ±Π²ΠΈΡΠΊΡΠ²Π°Π°Ρ ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ Π΄ΠΎ os.environ, Π½ΠΎ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π±Π°ΡΠ°Π°Ρ Π΅Π΄Π΅Π½ ΠΊΡΠΏ Π΄Π΅ΡΡΡΠ²Π° ΡΡΠΎ Π³ΠΎ ΠΎΠ΄Π²Π»Π΅ΠΊΡΠ²Π°Π°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ (ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°, ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π²ΠΎ ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ ΠΈΡΠ½.);
- ΠΠΌΠ° Π΄ΠΎΠ±ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΈ, ΡΠ΅ΠΏΠ°ΠΊ, ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π²ΡΠ·Π°Π½ΠΈ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌ (Π³Π»Π°Π²Π½ΠΎ Π²Π΅Π± ΡΠ°ΠΌΠΊΠΈ ΠΊΠ°ΠΊΠΎ Django) ΠΈ Π·Π°ΡΠΎΠ° Π½Π΅ ΡΠ΅ Π²ΠΎΠΎΠΏΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½ΠΈ Π±Π΅Π· Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°;
- ΡΠ΅ΡΠΊΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΡΠΎ Π½ΠΎΠ²ΠΎ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ,
Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΠ°ΠΊΠΎget_<typename>(var_name)
ΠΠ»ΠΈ ΠΎΠ²Π΄Π΅
ΡΡΡΠ΅ Π΅Π΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ , ΠΊΠΎΡ, ΡΠ΅ΠΏΠ°ΠΊ, Π½Π΅ Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅Π³Π° ΠΎΠ±Π΅ΡΡΠ΅ΡΡΠ΅Π½ΠΈΠΎΡ Python 2 (ΠΊΠΎΡ, ΠΈ ΠΏΠΎΠΊΡΠ°ΡΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΎ RIP , ΡΓ¨ ΡΡΡΠ΅ ΠΈΠΌΠ° ΠΏΠ»Π°Π½ΠΈΠ½ΠΈ ΠΎΠ΄ ΠΏΠΈΡΠ°Π½ ΠΊΠΎΠ΄ ΠΈ ΡΠ΅Π»ΠΈ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΈ); - ΠΈΠΌΠ° ΡΡΠΈΠ»ΠΈΡΠ½ΠΈ Π·Π°Π½Π°Π΅ΡΠΈ ΠΊΠΎΠΈ ΠΎΠ΄ Π½Π΅ΠΊΠΎΡΠ° Π½Π΅ΠΏΠΎΠ·Π½Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π°Π²ΡΡΠΈΠ»Π΅ Π²ΠΎ Π²ΠΎΠ·Π²ΠΎΠ΄Π½ΠΎ PyPI ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π°Ρ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ (ΠΎΡΠΎΠ±Π΅Π½ΠΎ, ΠΈΠΌΠ΅ΡΠΎ βsmart-envβ Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½Π° ΠΌΠ΅ΡΠΊΠ°).
Π ΠΎΠ²Π°Π° Π»ΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π΅ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π‘Π΅ΠΏΠ°ΠΊ, Π³ΠΎΡΠ΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π±Π΅Π° Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ Π·Π° Π΄Π° ΠΌΠ΅ Π²ΠΎΠ·Π±ΡΠ΄Π°Ρ ΠΎΠΊΠΎΠ»Ρ ΠΈΠ΄Π΅ΡΠ°ΡΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²Π°ΠΌ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½ΠΎ.
ΠΠ°ΡΠ°ΡΠ° ΡΡΠΎ Π±Π΅Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ smart-env:
- ΠΠ°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ Π»Π΅ΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°
- ΠΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠΎ Python 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, ΡΡΠΎ, Π²ΡΡΡΠ½ΠΎΡΡ, ΡΠ° ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π°Π° ΠΊΠ»Π°ΡΠ° ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΡΠ° ΠΏΡΠ΅ΡΠ²ΠΎΡΠ° Π²ΠΎ ΠΌΠΎΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π° ΡΠ΅ΡΠΈΡΠΈ ΡΠ΅ΠΊΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ( ΡΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π° Π²ΠΎ Django, ΡΠ°ΠΌΠΎ ΡΠ°ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΅ ΡΠ°ΠΌΠΈΠΎΡ ΠΌΠΎΠ΄ΡΠ»/ΠΏΠ°ΠΊΠ΅Ρ Π·Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ).
ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ΡΠΎ/ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠΎΡ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ - enable_automatic_type_cast() ΠΈ disable_automatic_type_cast(). ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ΅ΡΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° JSON ΠΈΠ»ΠΈ Π΄ΡΡΠΈ ΠΈ ΡΠ°ΠΌΠΎ ΠΡΠ»ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° (Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° DEBUG Π²ΠΎ Django ΡΠΎ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΡΠΎ Π½ΠΈΠ·ΠΈ βΠ²Π°Π»ΠΈΠ΄Π½ΠΈβ Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°ΡΡΠ΅ΡΡΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ). ΠΠΎ, ΡΠ΅Π³Π° Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π°Ρ Π½ΠΈΠ·ΠΈΡΠ΅ - ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ΄ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ Π΄Π΅ΡΡΡΠ²Π° ΡΠ΅ Π²Π΅ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π²ΠΎ Π΄Π»Π°Π±ΠΎΡΠΈΠ½ΠΈΡΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅ΠΊΠ°Π°Ρ ΡΠΈΠ³Π½Π°Π» Π·Π° Π΄Π΅ΡΡΡΠ²ΡΠ²Π°ΡΠ΅. π ΠΠΏΡΡΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, ΠΏΠΈΡΡΠ²Π°ΡΠ΅ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½ΠΎ ΠΈ Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅ΡΠΈΡΠΈ ΡΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (Π·Π°ΠΌΡΠ·Π½Π°ΡΠΈ, ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ Π±Π°ΡΡΠΈ Π½Π΅ Π±Π΅Π° ΡΠ΅ΡΡΠΈΡΠ°Π½ΠΈ).
Π£ΡΠ»ΠΎΠ²ΠΎΡ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° Python 2 Π±Π΅ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΆΡΡΠ²ΠΈ (Π½Π°ΠΏΡΡΡΠ°ΡΠ΅ Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ βΡΠ΅ΡΠ΅ΡΠ½ΠΈΡΠ΅ Π±ΠΎΠ½Π±ΠΎΠ½ΠΈβ ΠΎΠ΄ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° Python 3), ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΏΡΠΈΡΡΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡ (Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΠΈΡΠ΅ ).
ΠΠΎ, ΠΏΠΎΡΡΠΎΡΠ°Ρ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°:
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° Python 3 Π·Π½Π°ΡΠΈ Π²Π΅ΡΠ·ΠΈΡΠ° 3.5 ΠΈ ΠΏΠΎΠ²ΠΈΡΠΎΠΊΠ° (Π½ΠΈΠ²Π½ΠΎΡΠΎ ΠΏΡΠΈΡΡΡΡΠ²ΠΎ Π²ΠΎ Π²Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΈΠ»ΠΈ Π½Π° ΠΌΡΠ·Π΅Π»ΠΈΠ²ΠΎΡΡ ΠΈΠ»ΠΈ Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠ΄ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π΄ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π·ΠΎΡΡΠΎ ΡΓ¨ ΡΡΡΠ΅ ΡΡΠ΅ Π½Π° 3.4);
- ΠΠΎ Python 2.7, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π±ΡΠΊΠ²Π°Π»ΠΈ. ΠΠΏΠΈΡ
ΡΡΠΊΠ° . ΠΠΎ, Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ ΡΠ°ΠΊΠ° Π΄Π° Π³ΠΎ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅, Π΄ΠΎΠ±ΡΠ΅Π΄ΠΎΡΠ΄Π΅Π½ ΡΡΠ΅ :);
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈΠΌΠ° ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ΅. ΠΠΊΠΎ Π½ΠΈΠ·Π°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°Π΅ ΠΎΠ΄ Π½ΠΈΡΡ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ΠΎΡΡΠ°Π½ΡΠ²Π° Π½ΠΈΠ·Π° (Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ Π½Π°Π½Π°Π·Π°Π΄ ΡΠΎ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π²ΠΎ Bash).
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΠΏΠΈΡΠΎΠ½-ΡΠΊΠΎΠ»ΠΊΠ°
Π‘Π΅Π³Π° ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ Π·Π° Π²ΡΠΎΡΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (ΡΠ΅ Π³ΠΎ ΠΈΡΠΏΡΡΡΠ°ΠΌ ΠΎΠΏΠΈΡΠΎΡ Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ Π°Π½Π°Π»ΠΎΠ·ΠΈ - ΡΠΎΡ Π΅ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° ΠΎΠ½ΠΎΡ ΠΎΠΏΠΈΡΠ°Π½ Π·Π° smart-env. ΠΠ½Π°Π»ΠΎΠ·ΠΈ -
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΈΠ΄Π΅ΡΠ°ΡΠ° Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΠΈ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΡΠΎΠ° ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΎΠ½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π·Π° smart-env, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ:
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
ΠΠ΄Π΅ΡΠ°ΡΠ° Π΅ ΠΎΠ²Π°Π°:
- ΠΠ΄Π½Π° ΠΊΠ»Π°ΡΠ° ΡΡΠΎ Π³ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΠΠ°Ρ Π²ΠΎ ΡΠ²Π΅ΡΠΎΡ Π½Π° ΠΠ°ΡΡΠΎΠ½;
- Π‘Π΅ΠΊΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° Bash ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Shell;
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΏΠΎΡΠΎΠ° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ Π²ΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Bash;
- Π‘Π΅ΠΊΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° βΠΎΠ²Π΄Π΅ ΠΈ ΡΠ΅Π³Π°β Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ°, Ρ.Π΅. ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ;
- ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ Π΄ΠΎ ΠΈΠ·Π»Π΅Π·ΠΎΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π²ΠΎ stdout, ΠΊΠ°ΠΊΠΎ ΠΈ Π½Π΅ΡΠ·ΠΈΠ½ΠΈΠΎΡ ΠΏΠΎΠ²ΡΠ°ΡΠ΅Π½ ΠΊΠΎΠ΄;
- ΠΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π΅ Π΅ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, ΡΠ΅ ΡΡΠ»Π° ΠΈΡΠΊΠ»ΡΡΠΎΠΊ.
ΠΠ°ΠΊΠΎ ΠΈ ΠΊΠ°Ρ smart-env, ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Python 2 (ΠΈΠ°ΠΊΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΆΡΡΠ²Π΅Π½Π° ΠΊΡΠ²) ΠΈ Π½Π΅ΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Python 3.0-3.4.
ΠΠ»Π°Π½ΠΎΠ²ΠΈ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠ΅Π³Π°: ΠΈ Π΄Π²Π΅ΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΈ Π½Π° ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ PyPI. ΠΠ·Π²ΠΎΡΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π½Π° Github (Π²ΠΈΠ΄ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρ).
ΠΠ²Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΡΠ°Π·Π²ΠΈΠ΅Π½ΠΈ Π·Π΅ΠΌΠ°ΡΡΠΈ Π³ΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΠ°Π½ΠΈ ΠΎΠ΄ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅. Π, Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎ smart-env, ΡΠΎΠ³Π°Ρ Π²ΠΎ python-shell Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ ΠΈΠΌΠ° ΡΡΡΠ΅ Π½Π΅ΡΡΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅:
- ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ;
- ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠΈΠΌΠΎΡ (ΡΠ°Π±ΠΎΡΠ° ΡΠΎ stdin);
- Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠ²ΠΎΡΡΡΠ²Π° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΡΡΡΠ²ΠΎ Π·Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π»Π΅Π· ΠΎΠ΄ stderr);
- ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΡΠΎ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° dir());
- ΠΈΡΠ½
ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ
- smart-env Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
Github ΠΈPyPI - Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-shell:
Github ΠΈPyPI Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΡΠΊΠΈ ΠΊΠ°Π½Π°Π» Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°
Π£ΠΠ 23.02.2020:
* Π‘ΠΊΠ»Π°Π΄ΠΈΡΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΈ, ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ Π²ΡΡΠΊΠΈ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ
* ΠΠ΅ΡΠ·ΠΈΡΠ°ΡΠ° python-shell==1.0.1 ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠ²Π° Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° 29.02.2020 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° dir(Shell), ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠΎ Π½Π΅Π²Π°ΠΆΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Python ΠΈ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ·Π²ΠΎΡ: www.habr.com