ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ python
ΠΠ°ΠΊ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π½Π° Python Π² Β«Π½Π°ΡΡΠΎΡΡΡΡΒ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Docker
ΠΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, ΡΠΌΠ΅Π΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ β Π²ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Docker.
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΡΡΠ° ΡΡΠ°ΡΡΡ?
ΠΠ°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΡ ΠΌΠΎΠ½ΡΠ°ΠΆΠ½ΡΡ ΠΏΠ»Π°ΡΡ?
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
ΠΠ΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π»ΡΠ±Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Π²Π°ΠΌ ΡΠΊΡΠΈΠΏΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. ΠΡΠ°ΠΊ, Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Π΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡ, ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΊΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π»ΠΎΠ³ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ. Β«Π£ ΠΌΠ΅Π½Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎΒ», β ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΠΊ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ Π½Π΅ΠΌΡ Π·Π° ΠΏΠΎΠΌΠΎΡΡΡ.
Docker ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΠΎΡΡΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Python, ΡΡΠΎΠ±Ρ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡΡΡΡ Ρ Π»ΡΠ±ΡΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ Docker.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ.
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Github ΠΈ Docker
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½Π° Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΡ, ΡΠΎ ΠΈΠ·ΡΡΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Github ΠΈ Docker, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΡΠΈΡΡΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄.
ΠΠΎβ¦ ΠΏΠΎΡΠ΅ΠΌΡ Docker?
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΠ Π² Π³ΡΡΠ·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Π³ΡΡΠ·ΠΎΠΏΠ΅ΡΠ΅Π²ΠΎΠ·ΡΠΈΠΊΠ° (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°-Ρ ΠΎΡΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΠ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·ΠΎΠ»ΠΎΡΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.
ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° Docker/ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ docker) ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°ΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Kubernetes ΠΈΠ»ΠΈ Scale Sets Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ»ΡΠ³. Π Π΄Π°, ΠΎΠ± ΡΡΠΎΠΌ ΠΌΡ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π Π½ΡΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ β ΠΌΡ ΡΠ½ΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ (ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π² Linux, ΡΡΠΎ /tmp ). ΠΠΎΠ³ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π½Π° stdout, ΠΈ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ Π² Π»ΠΎΠ³Π°Ρ docker (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅).
main.py: ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ» requirements.txt Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ:
Π‘ΠΎΠ·Π΄Π°ΡΠΌ Dockerfile
Π ΠΌΠΎΠ΅ΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² Makefile, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΈΠΌ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡΡΡΡ. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, Π½ΠΎ ΡΠΆΠ΅ Π² Docker.
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΡΠ°Π±ΠΎΡΡ Dockerfile, ΠΎΠ± ΡΡΠΎΠΌ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΡΡΠΎΡΠΈΠ°Π»Ρ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Dockerfile β ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΠΈ Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (ΡΡΡΠΎΠΊΠ° 6), ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π· (ΡΡΡΠΎΠΊΠ° 9), ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ΄ Π² Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· (ΡΡΡΠΎΠΊΠΈ 13β14; ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ°ΠΏΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° Ρ 1 ΠΠ Π΄ΠΎ 200 ΠΠ), Π·Π°Π΄Π°ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (ΡΡΡΠΎΠΊΠ° 17) ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΡΡΡΠΎΠΊΠ° 20), Π½Π° ΡΡΠΌ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ.
Π‘Π±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ°Π·Π°
ΠΠ°Π²Π΅ΡΡΠΈΠ² Ρ Dockerfile, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠ°ΠΏΡΡΠΊ ΠΎΠ±ΡΠ°Π·Π°
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ²ΠΎΡΠΈΡΡ ΠΌΠ°Π³ΠΈΡ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² Docker Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅Ρ ΠΊΠΎΠΌΡ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ docker (Π΅ΡΠ»ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π΅ΡΡ Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ), Π° Π½Π΅ ΠΎΠ±ΡΡΠ°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ½ΠΊΠΎΡΡΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π₯ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ?
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ΄Π΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΡΠΌ Π½Π° ΡΠ°ΡΡΠΈ:
-d β Π·Π°ΠΏΡΡΠΊ ΠΎΠ±ΡΠ°Π·Π° Π² detached mode, Π° Π½Π΅ Π² foreground mode
—restart=always β ΠΏΡΠΈ ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° docker ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π°Π²Π°ΡΠΈΠΉ, ΡΡΠ°!
—e DIRECTORY=’/tmp/test’ β ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ. (Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° python ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΡΠΈΡΡΠ²Π°Π»Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.)
-v /tmp/:/tmp/ β ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /tmp Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /tmp ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Docker. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ: Π»ΡΠ±ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, ΠΠΠΠΠΠ Π±ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ Π½Π°ΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ docker, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ.
directory-monitor β ΠΈΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΠ±ΡΠ°Π·Π° Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker ps :
Docker ΡΠΎΠ·Π΄Π°ΡΡ crazy-ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΠ΄ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΡΠ΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΡ crazy_wozniak ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌ /tmp/test Π½Π° ΠΌΠΎΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π΅ΡΠ»ΠΈ Ρ ΡΠΎΠ·Π΄Π°ΠΌ Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡΠ°Π·ΠΈΡΡΡΡ Π² Π»ΠΎΠ³Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
ΠΠΎΠ³ΠΈ Docker Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
ΠΠΎΡ ΠΈ Π²ΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π° Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΡΡΠ³ΠΈΠΌ Π»ΡΠ΄ΡΠΌ.
ΠΠ΅Π»ΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ
ΠΠ°ΡΠ° Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, Π΄ΡΡΠ·ΡΡΠΌ, Π²Π°ΠΌ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π΄Π° ΠΈ ΠΊΠΎΠΌΡ ΡΠ³ΠΎΠ΄Π½ΠΎ Π² ΠΌΠΈΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ Π΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅. ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Docker hub.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡ Π½Π΅Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΠ½ ΠΈΠ· cli:
ΠΠΎΠ³ΠΈΠ½ΠΈΠΌΡΡ Π² Dockerhub
ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠΌΠ΅ΡΠΈΠΌ ΠΈ Π·Π°ΠΏΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· Π² ΡΠ²ΠΎΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΊΡ ΠΈ ΠΏΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π· Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ docker hub
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ pull ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΡΠ°Π±ΠΎΡΡ:
Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·Π° docker
ΠΠ΅ΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π½ΡΠ» Π²ΡΠ΅Π³ΠΎ 30 ΡΠ΅ΠΊΡΠ½Π΄.
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅?
ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ±Π΅Π΄ΠΈΡΡ Π²Π°Ρ Π² ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ. Docker ΠΎΡΡΠ°Π½Π΅ΡΡΡ Ρ Π½Π°ΠΌΠΈ Π½Π°Π΄ΠΎΠ»Π³ΠΎ, ΠΈ ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅ Π²Ρ Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠΈΡΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ².
Π‘ΡΡΡ Docker Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ Π±ΡΠ» ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΡΠΎΡΠΈΠ°Π» ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ Π΄Π΅ΡΠ΅Π²ΡΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΌΠΈ ΡΠΏΠ°Π³Π΅ΡΡΠΈ, Π½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Π½Π΅ ΠΊΠΎΡΠ½ΡΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ
ΠΠ° ΠΏΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠ΄ΡΠΈΠ½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π° Linux ΠΈΠ»ΠΈ Windows. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΅Π½Π΄ΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΡΡΡΡΡ Π² ΡΠ²ΠΎΡΠΌ ΡΠΎΠ΄Π΅ ΠΏΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈΠ· Π»ΡΡΡΠΈΡ Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠΎΠ² Π² Π ΠΎΡΡΠΈΠΈ ΠΈ ΠΠ‘. ΠΠΎΡΠΏΠ΅ΡΠΈΡΠ΅ Π·Π°ΠΊΠ°Π·Π°ΡΡ!
Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ, Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΠ΅ΠΉ Π½Π΅ ΡΠ°ΠΌΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΡΡ ΡΠ΅ΠΌΡ: ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° Π² Python, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΡΠ°Π±ΠΎΡΡ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π΅ΡΠ΅Π²ΠΎΠΌ (AST) ΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠΈΡΠΎΠΌ, ΡΡΠΎ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² Π½Π΅ΠΌ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π Π½ΠΈΡ ΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ.
ΠΡ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π±ΡΡΡΡΠ΅Π΅? Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (AST) ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ?
Π ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Python ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΡ ΡΠΎΡΠΌΡ (AST). Π‘ΠΎΠΎΡΡΠ΄ΠΈΠ² AST Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΠΎΠΈΡΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Python Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°.
ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅Π²ΠΎ
ΠΠ°ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅?
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AST.
Π Python ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ (ΡΠ½Π°ΡΠ°Π»Π° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π§ΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°ΡΡ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π² Python ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΈΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅. ΠΠ±ΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΡΡΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Ρ ΠΊΠΎΡΠ½Ρ Π΄Π΅ΡΠ΅Π²Π°), ΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π»Π΅Π²Π°Ρ ΡΠ°ΡΡΡ ΡΡΠΎΠΉ ΡΡΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΏΡΠ°Π²Π° ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅. Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
BinOp ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Binary Operation (ΠΠΈΠ½Π°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ) ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΡΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΏΠΎ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π²Π°Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ Π² AST, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Python, Π±ΡΠ΄ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ ΠΈ ΠΏΠΎΠ»Ρ, Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΠ½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Π΅ΡΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π· β ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΠΎΡΠΊΡΠΎΠ΅ΠΌ AST, ΡΠΆΠ΅ ΡΠ²Π΅ΡΡ Ρ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π°:
ΠΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ: ΠΎΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° Python, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π²Π° ΡΡΠ°ΠΏΠ°. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Π½Π° Π²Ρ ΠΎΠ΄, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΡΠΈΠ½Π³, ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (AST). ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ AST ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΎΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄. ΠΠ·ΡΠ²ΡΠΈΡΡ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ»ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ AST, ΠΈΠ»ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°. ΠΠ±ΠΎΠΈΠΌ ΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ, Ρ ΠΎΡΡ, AST Π² Π»ΡΠ±ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΉ, ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ AST Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ Python Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, JavaScript, Π° Π½Π΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄.
ΠΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·Π»Π° Π²Π½ΡΡΡΠΈ AST
ΠΠΌΠ΅Ρ AST ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°? ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ΄ΠΎΠ±Π½ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Python.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ·Π»Π° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ast Π΅ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ copy_location ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
ΠΡΡΠ°ΡΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CPython ΡΠΆΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ·Π»Ρ BinOp ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π·Π΄Π΅ΡΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Python/ast_opt.c. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ CPython Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π² ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π½Π°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ·Π»ΠΎΠ² Π² AST
ΠΠ°ΠΊ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ? ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ AST ΠΈ ΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π²Ρ ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Π»ΠΈΡΡ, Π΄Π΅Π»Π°Ρ pi ΠΈΡΡΠΈΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π°, ΡΠΎ Π΅ΡΡΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ, Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Python.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ·Π΅Π» ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ, ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° ΡΠ·Π΅Π»-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ·Π»ΠΎΠ², ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ AST ΠΈ ΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ·Π»Ρ (ΠΏΠΎΡΠ΅ΡΠ°Π΅Ρ ΠΈΡ ). Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΠΈΠ·ΠΈΡΠΈΡΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΡΠ»Π°Π΅ΡΡΡ Π»ΠΈ ΡΠ·Π΅Π» Name Π½Π° pi ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π»ΠΈ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΡΠΎΠΌΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ pi (ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΎ ΠΏΠΎΠ»Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ctx ).
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Python
ΠΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ pi, ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΡΡΠ±ΡΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Python Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π²Π΅ΡΡΠΌΠ° ΡΡ ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ global), ΡΠΎ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΈ Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎ, Ρ ΠΎΡΡ x = 0 Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊ x ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, x ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΌΠ°ΡΡΡΠ°Π±Π°Ρ Π²ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ Π΄Π°ΠΆΠ΅ Π² ΡΡΡΠΎΠΊΠ΅ 3. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Python Π±ΡΠ΄Π΅Ρ ΡΡΠ³Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ x Π² ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Python, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Python/symtable.c.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Python, ΠΊΠ°ΠΊ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π²Π° ΡΡΠ°ΠΏΠ°: ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅Π»Π°Π΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (AST), Π° Π·Π°ΡΠ΅ΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠ΅ΠΊΠΎΠ²ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. Π Python ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ AST Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Python, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ AST ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ Π²Π½Π΅Π΄ΡΠΈΡΡ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ΠΌΠ°Π»ΠΎ Π΄Π΅ΡΠ°Π»Π΅ΠΉ Ρ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΡΡΠΈΠ». Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ β Π΄Π΅Π»ΠΎ Π²Π΅ΡΡΠΌΠ° Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ β Π½Π΅ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π³ΠΎΡΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, Π° Π΄Π°ΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Python Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ Π²Ρ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
Π‘ΠΏΠΎΡΠΎΠ± 1
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ Python, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π‘ΠΏΠΎΡΠΎΠ± 2 (Π½ΠΈΠΆΠ΅)
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Python3.4. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π½Π°Π·ΠΎΠ²Π΅ΠΌ myenv, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ myenv, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ myenv Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ. ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Python ΡΠ΅ΠΏΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ py2exe (https://pypi.python.org/pypi/py2exe
HEAD=dobj) Π² Π½Π°ΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ:
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ EXE-ΡΠ°ΠΉΠ», Π² Π½Π°ΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
(Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ hello.py Π½Π° ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°. ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Π°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, C:\Projects\Python\ hello.py). ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΠΏΠΊΡ DIST, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ, Π½Π°Π±Π΅ΡΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ EXE-ΡΠ°ΠΉΠ».
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΈΡΡΠ΅Π·Π°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ.
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΡΠΊΡ
Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π° Python. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° ΠΎΠΊΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Π²Π²ΠΎΠ΄Π°.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ py2exe Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ: https://pypi.python.org/pypi/py2exe
ΠΡΡ
ΠΎΠ΄ ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
Π‘ΠΏΠΎΡΠΎΠ± 2
Π§Π΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Windows ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ pyinstaller:
Π ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΉΠ»
ΠΠ°ΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π°Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΠΌΠ΅ΡΡΠΎ exapmle.py ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ exe ΡΠ°ΠΉΠ».
Π§Π΅ΡΠ΅Π· ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ Π²ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ! Π‘ΠΊΠΎΡΠΊΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, exe ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ΅ dist
ERROR: Command errored out with exit status 1: ‘d:\pythoninstalling\python.exe’ ‘C:\Users\ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ\AppData\Roaming\Python\Python38\site-packages\pip_vendor\pep517_in_process.py’ prepare_metadata_for_build_wheel ‘C:\Users\4D2B
1\AppData\Local\Temp\tmpr7hey5ho’ Check the logs for full command output.
2 ΠΎΡΠ²Π΅ΡΠ° 2
ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎ ΡΠΌΠ΅Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π½ΠΈΠΆΠ΅, Π²ΠΎΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ:
Π£Π·Π½Π°ΡΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ Python (Π² ΠΏΡΡΠΊΠ΅ ΠΈΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΡ Python, ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ ΠΠΠ ΠΏΠΎ Π½Π΅ΠΉ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΏΡΠ½ΠΊΡ «Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°», Π΄Π°Π»ΡΡΠ΅, Π΅ΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠ»ΡΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΈΡΠΎΠ½Π°, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΠΠ ΠΏΠΎ ΡΡΠ»ΡΠΊΡ, ΠΈ ΠΆΠΌΡΠΌ «Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°», ΡΠ°ΠΊ ΠΌΡ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΠΈΡΠΎΠ½Π°), ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Scripts, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΡΡΡ ΠΊ Π½Π΅ΠΉ. ΠΠ°Π»Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°, ΠΏΠΈΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ. «. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ «PATH» ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ «ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ». ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘ΠΎΠ·Π΄Π°ΡΡ» ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Scripts, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ ΡΠ°Π½Π΅Π΅. Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΎ Π²ΡΡ, Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΎΠΊΠΎΠ½. ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ cmd, Π²ΡΠ°Π»Ρ!
ΠΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ:
ΠΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π½ΡΠΆΠ½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ .exe. ΠΡΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Windows, ΠΊΠ°ΠΊ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ΠΎ.
ΠΡΡΡ ΠΏΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠ΄ Π½ΡΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
Π ΡΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΌΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π΅Π΄ΠΈΠ½ΡΡ, Π½ΠΎ pyinstaller ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ» ΡΠ²ΠΎΡ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΡΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΈ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ PyInstaller Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ exe-ΡΠ°ΠΉΠ»Π° ΠΈΠ³ΡΡ Π½Π° Pygame
Π―, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²ΠΈΡΠΊΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ³Ρ, ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python.
ΠΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΠ±ΡΡΠ°Π»ΠΎΠΊ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³Ρ Π½Π° Pygame Π½Π΅ ΠΏΠΎΠΆΠ°Π»ΡΠ΅ΡΡΡΡ, Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΠ°ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ exe-ΡΠ°ΠΉΠ», Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠ΄ΠΎΠΌ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΈΠ³ΡΠΎΠ²ΡΠΌΠΈ Π·Π²ΡΠΊΠ°ΠΌΠΈ.
ΠΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΎΠ±ΠΈΡΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π² exe, Π²ΡΠ±ΡΠ°Π» PyInstaller. ΠΠ³ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠΏΠΈΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ (Π΄Π»Ρ Windows).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° PyInstaller
Π ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΈΡΠ΅ΠΌ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ spec-ΡΠ°ΠΉΠ»Π° (ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ)
Pyinstaller ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ spec-ΡΠ°ΠΉΠ», ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π½Π°Π±ΠΈΡΠ°Π΅ΠΌ:
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» mygame.spec
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ spec-ΡΠ°ΠΉΠ». ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ spec-ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Analysis ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈΠΌΡ py-ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΡΡΠΈΠ±ΡΡ pathex ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΡΠΏΠΈΡΠΊΠ΅ datas ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΡΠ·ΡΠΊΠ°/Π·Π²ΡΠΊΠΈ, ΡΡΠΈΡΡΡ). Datas β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΠΉ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π² ΠΊΠΎΠ΄Π΅
Π ΠΊΠΎΠ΄Π΅ Π΄ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π°ΠΉΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠ»Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΡΡΡ).
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ PyInstaller ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΡΡΡ ΠΊ Π½Π΅ΠΉ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ _MEIPASS.
Π€ΡΠ½ΠΊΡΠΈΡ resource_path ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡ ΠΊ Π½Π΅ΠΉ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ) ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ ΡΠΎΡ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ (ΡΠΎ Π΅ΡΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΈΠ³ΡΠΎΠΉ).
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ
ΠΡΠΈ ΡΡΠΎΠΌ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π²ΡΠ½Π΅ΡΠ΅Π½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (ΡΠΌ. ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° datas).
ΠΠ°Π»Π΅Π΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ°ΠΉΠ»:
Π‘ ΠΌΡΠ·ΡΠΊΠΎΠΉ ΠΈ ΡΡΠΈΡΡΠ°ΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ.
Π ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌ:
ΠΠΎΡΠΎΠ²ΠΎ! Exe-ΡΠ°ΠΉΠ» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ dist.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅ Π²Π°ΡΠ΅ΠΉ ΠΈΠ³ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΡ ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ quit() ΠΈΠ»ΠΈ exit(), ΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅, ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π»Ρ ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ site.