ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ Π²ΡΠ΅ΠΌ.
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² Π² ΡΡΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Π΅Π²ΠΎΠΏΡΠ°ΠΌ, ΠΏΠΎ ΠΈΡ Π²ΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ² ΠΎΠ½ΠΎΠΉ, ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊ ΡΡΠ°ΡΡΠΌ Π΄ΠΎΠ±ΡΡΠΌ Bash-ΡΠΊΡΠΈΠΏΡΠ°ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Bash ΠΈ Python ΠΈΡΠΏΠΎΠ²Π΅Π΄ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, Π² Π²ΠΈΠ΄Ρ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Bash-ΡΠΊΡΠΈΠΏΡΠΎΠ² Π½Π° Β«Π·ΠΌΠ΅ΠΈΠ½ΡΠΉ ΡΠ·ΡΠΊΒ» ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΌΠΊΠΎΠΉ ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ Π΄Π΅Π²ΠΎΠΏΡΠ°ΠΌ, ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΡΡΠΈΠ»ΠΈΡ Π½Π° Python. ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ°Π·Ρ Π΄Π²Π΅ Π½ΠΎΠ²ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ° β
ΠΠΎΠ³ΠΎ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»ΠΎ, ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠΎΠ²ΡΠ΅ Β«Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ΡΒ»?
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ΄Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ? Π§ΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ os.environ ΠΈ subprocess.<ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½Π° Π²Π°Ρ Π²ΠΊΡΡ>?
ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° smart-env
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΡΠΈΡΠ΅, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ»Π΅Π·ΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ ΡΠΈΡΠΊ Π½Π΅ Π½Π°ΠΉΡΠΈ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π½ΠΎ ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅, Β«ΡΡΡΠ°Ρ ΠΎΠ²ΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉΒ». ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΊΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ».
ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ
- Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΊ os.environ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ ΠΊΡΡΡ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΡΠΏΠ΅Ρ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π²ΡΠ·ΠΎΠ²Π°Ρ ΠΈ ΠΏΡ.);
- Π΅ΡΡΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π²ΡΠ·Π°Π½Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π½Π° Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π²ΡΠΎΠ΄Π΅ Django) ΠΈ ΠΏΠΎΡΠΎΠΌΡ Π±Π΅Π· Π½Π°ΠΏΠΈΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅;
- Π΅ΡΡΡ ΡΠ΅Π΄ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ²Π½ΠΎ ΠΏΠ°ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²ΠΈΠ΄Π°get_<typename>(var_name)
ΠΠ»ΠΈ Π²ΠΎΡ
Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ , ΠΊΠΎΡΠΎΡΠΎΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½ΡΠ½Π΅ ΠΎΠΏΠ°Π»ΡΠ½ΡΠΉ Python 2 (Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π°ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ R.I.P. , Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π³ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅Π»ΡΠ΅ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ); - Π΅ΡΡΡ ΡΠΊΠΎΠ»ΡΠ½ΠΎ-ΡΡΡΠ΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΊΠΈ, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ Π·Π°ΡΠ΅ΠΌ ΠΎΠΊΠ°Π·Π°Π²ΡΠΈΠ΅ΡΡ Π² Π°ΠΏΡΡΡΠΈΠΌΠ½ΠΎΠΌ 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, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ/ΠΏΠ°ΠΊΠ΅Ρ settings).
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅/Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β enable_automatic_type_cast() ΠΈ disable_automatic_type_cast(). ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π»Π΅ΠΆΠΈΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ»Π΅Π²Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° (ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ DEBUG Π² Django ΠΏΡΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Ρ Β«Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈΒ» ΡΡΡΠΎΠΊΠ°ΠΌΠΈ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ ΡΡ ΡΠ»ΡΡΠ°Π΅Π²). ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅Ρ Π½ΡΠΆΠ΄Ρ ΡΠ²Π½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ β Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Π² Π½Π΅Π΄ΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΄Π΅Ρ ΡΠΈΠ³Π½Π°Π»Π° ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. π Π ΡΠ΅Π»ΠΎΠΌ ΠΆΠ΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ (Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ frozenset, complex ΠΈ bytes).
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Python 2 Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· ΠΆΠ΅ΡΡΠ² (ΠΎΡΠΊΠ°Π· ΠΎΡ typing ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Β«ΡΠ°Ρ Π°ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠΎΠΊΒ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Python 3), Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²Π΅Π·Π΄Π΅ΡΡΡΠ΅ΠΌΡ six (Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΠΎΠ²).
ΠΠΎ Π΅ΡΡΡ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ:
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 3 ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ 3.5 ΠΈ Π²ΡΡΠ΅ (ΠΈΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π»ΠΈΠ±ΠΎ Π»Π΅Π½ΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΡ , Ρ.ΠΊ. ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π²Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΡΠΈΠ΄ΠΈΡΠ΅ Π½Π° 3.4);
- Π Python 2.7 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ². ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΡΡΡ . ΠΠΎ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π°Ρ ΠΎΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ β welcome:);
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ²Π΅Π΄ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ»ΡΡΠ°ΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠ°ΡΡΠΈΠ½Π³Π°. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ (ΡΠΊΠΎΡΠ΅Π΅, ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Bash).
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-shell
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π²ΡΠΎΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΎΠΏΡΡΡ β ΠΎΠ½ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π΄Π»Ρ 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 Π² ΠΌΠΈΡΠ΅ Python;
- ΠΠ°ΠΆΠ΄Π°Ρ Bash-ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° Shell;
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ Π² Π²ΡΠ·ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Bash;
- ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Β«Π·Π΄Π΅ΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°ΡΒ» Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π°, Ρ.Π΅. ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄;
- Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΡΡ Π»ΠΎΠΏΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² stdout, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄ Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°;
- ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ β Π±ΡΠΎΡΠ°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎ smart-env, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 2 (ΠΏΡΠ°Π²Π΄Π°, ΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΡΠΎΠ²ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅) ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 3.0-3.4.
ΠΠ»Π°Π½Ρ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ: ΠΎΠ±Π΅ Π²ΡΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ PyPI. ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° Github (ΡΠΌ. Π½ΠΈΠΆΠ΅).
ΠΠ±Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΈΠ΄Π±Π΅ΠΊΠ°, ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π²ΡΠΈΡ ΡΡ. Π, Π΅ΡΠ»ΠΈ Π² smart-env, ΠΌΠΎΠΆΠ΅Ρ, ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠΈΡ, ΡΠΎ Π² python-shell ΡΠΎΡΠ½ΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ:
- ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ²;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (ΡΠ°Π±ΠΎΡΠ° Ρ stdin);
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, property Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΡ Π»ΠΎΠΏΠ° ΠΈΠ· stderr);
- ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ (Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dir());
- ΠΈ Ρ.Π΄.
Π‘ΡΡΠ»ΠΊΠΈ
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° smart-env:
Github ΠΈPyPI - ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-shell:
Github ΠΈPyPI Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
UPD 23.02.2020:
* Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ
* ΠΠ΅ΡΡΠΈΡ python-shell==1.0.1 Π³ΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΊ Π²ΡΡ
ΠΎΠ΄Ρ 29.02.2020. Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°Π²ΡΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dir(Shell), Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ Python-Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π³ΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com