ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python

Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ скрипт Π½Π° Python Π² Β«Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Docker

Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. cpfl1tfbn3wehbyf8jj1botuca4. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-cpfl1tfbn3wehbyf8jj1botuca4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cpfl1tfbn3wehbyf8jj1botuca4. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Для ΠΊΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° эта ΡΡ‚Π°Ρ‚ΡŒΡ?

Π’Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΡƒΡŽ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ?

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. . ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Как выглядит ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями

Π‘Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ любСзно прСдоставил Π²Π°ΠΌ скрипт установки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ запускаСтС Π΅Π³ΠΎ скрипт, ΠΈ сразу ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΊΡƒΡ‡Ρƒ сообщСний Π»ΠΎΠ³ΠΎΠ² ошибок. Β«Π£ мСня Π½Π° машинС всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎΒ», β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.

Docker Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, обСспСчивая ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ быстро Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши прилоТСния Π½Π° Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Docker.

Π’ частности, ΠΌΡ‹ рассмотрим скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ процСсс.

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Github ΠΈ Docker

Если Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Π° Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Github ΠΈ Docker, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡΡ‚ΠΈΡ‚ΡŒΡΡ этот ΠΊΠΎΠ΄.

Но… ΠΏΠΎΡ‡Π΅ΠΌΡƒ Docker?

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ вашСго ПО Π² Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ стандартный интСрфСйс для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Π³Ρ€ΡƒΠ·ΠΎΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·Ρ‡ΠΈΠΊΠ° (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°-хоста), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ПО.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° самом Π΄Π΅Π»Π΅ являСтся Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ стандартом портируСмости.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. . ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

ΠžΠ±Ρ‰Π°Ρ схСма Docker/ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ (особСнно ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ docker) ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ вашим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ возмоТности. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· Kubernetes ΠΈΠ»ΠΈ Scale Sets любого поставщика ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг. И Π΄Π°, ΠΎΠ± этом ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’ Π½Ρ‘ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ особо слоТного β€” ΠΌΡ‹ снова Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с простым скриптом, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ измСнСния Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² Linux, это /tmp ). Π›ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° stdout, ΠΈ это Π²Π°ΠΆΠ½ΠΎ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ Π² Π»ΠΎΠ³Π°Ρ… docker (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅).

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

main.py: простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ρ„Π°ΠΉΠ»ΠΎΠ²

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно.

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» requirements.txt с зависимостями, Π½Π° этот Ρ€Π°Π· Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΎΠΉ:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Dockerfile

Π’ ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ создали скрипт процСсса установки Π² Makefile, благодаря Ρ‡Π΅ΠΌΡƒ ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ. На этот Ρ€Π°Π· ΠΌΡ‹ сдСлаСм Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, Π½ΠΎ ΡƒΠΆΠ΅ Π² Docker.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Нам Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности устройства ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Dockerfile, ΠΎΠ± этом Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Dockerfile β€” ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°, содСрТащСго ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python ΠΈ Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, послС Ρ‡Π΅Π³ΠΎ устанавливаСм зависимости (строка 6), создаём Π½ΠΎΠ²Ρ‹ΠΉ минималистичный ΠΎΠ±Ρ€Π°Π· (строка 9), ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ зависимости ΠΈ ΠΊΠΎΠ΄ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· (строки 13–14; это называСтся многоэтапной сборкой, Π² нашСм случаС это снизило Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° с 1 Π“Π‘ Π΄ΠΎ 200 ΠœΠ‘), Π·Π°Π΄Π°Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния (строка 17) ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ исполнСния (строка 20), Π½Π° Ρ‡Ρ‘ΠΌ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΎΠ±Ρ€Π°Π·Π°

Π—Π°Π²Π΅Ρ€ΡˆΠΈΠ² с Dockerfile, ΠΌΡ‹ просто выполняСм ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Запуск ΠΎΠ±Ρ€Π°Π·Π°

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сборки ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ магию.

Один ΠΈΠ· самых Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… аспСктов Docker Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ прСдоставляСт стандартизованный интСрфСйс. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ спроСктируСтС свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚ΠΎ пСрСдавая Π΅Ρ‘ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, достаточно Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ docker (Ссли Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π΅Ρ‰Ρ‘ Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚), Π° Π½Π΅ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ тонкостям устройства вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ?

Команда для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря 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 :

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Docker создаёт crazy-ΠΈΠΌΠ΅Π½Π° для Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ люди Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ значСния Ρ…ΡΡˆΠ΅ΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС имя crazy_wozniak относится ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ отслСТиваСм /tmp/test Π½Π° ΠΌΠΎΠ΅ΠΉ локальной машинС, Ссли я создам Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Π² Π»ΠΎΠ³Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Π›ΠΎΠ³ΠΈ Docker Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

Π’ΠΎΡ‚ ΠΈ всё, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° вашСй машинС. Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π»ΡŽΠ΄Ρ‹ΠΌ.

ДСлимся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ

Π’Π°ΡˆΠ° докСризированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ вашим ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ, Π²Π°ΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π΄Π° ΠΈ ΠΊΠΎΠΌΡƒ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² ΠΌΠΈΡ€Π΅, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ распространСниС. Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для этого являСтся Docker hub.

Если Ρƒ вас Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°, Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈΠ½ ΠΈΠ· cli:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Логинимся Π² Dockerhub

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠΌ ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный ΠΎΠ±Ρ€Π°Π· Π² свой Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

ДобавляСм ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΡƒΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π· находится Π² вашСм Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π΅ docker hub

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ pull этого ΠΎΠ±Ρ€Π°Π·Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сквозном тСстировании всСй ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ тСстированиС нашСго ΠΎΠ±Ρ€Π°Π·Π° docker

Π’Π΅ΡΡŒ этот процСсс занял всСго 30 сСкунд.

Π§Ρ‚ΠΎ дальшС?

НадСюсь, ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ вас Π² ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅ΠΉ практичности ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Docker останСтся с Π½Π°ΠΌΠΈ Π½Π°Π΄ΠΎΠ»Π³ΠΎ, ΠΈ Ρ‡Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹ Π΅Π³ΠΎ освоитС, Ρ‚Π΅ΠΌ большС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ прСимущСств.

Π‘ΡƒΡ‚ΡŒ Docker Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² сниТСнии слоТности. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±Ρ‹Π» простой скрипт Π½Π° Python, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» ΠΈ для создания ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ слоТности с Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ зависимостСй, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈ спагСтти, Π½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ эти трудности Π½Π΅ коснутся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

На ΠΏΡ€Π°Π²Π°Ρ… Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹

Вдсина ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры Π½Π° Linux ΠΈΠ»ΠΈ Windows. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ€Π΅Π½Π΄ΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΡƒΡ‡ΡˆΡƒΡŽ Π² своём Ρ€ΠΎΠ΄Π΅ панСль управлСния сСрвСрами собствСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² Π² России ΠΈ Π•Π‘. ΠŸΠΎΡΠΏΠ΅ΡˆΠΈΡ‚Π΅ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ прСобразования ΠΊΠΎΠ΄Π° Π½Π° Python

БСгодня ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Π½Π΅ ΡΠ°ΠΌΡƒΡŽ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π΅ΠΌΡƒΡŽ Ρ‚Π΅ΠΌΡƒ: ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π² Python, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Ρ€Π°Π±ΠΎΡ‚Ρƒ с абстрактным синтаксичСским Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ (AST) ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΈΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Python являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Ρ‚Π°ΠΊΠΈΠ΅ возмоТности Π² Π½Π΅ΠΌ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. О Π½ΠΈΡ… ΠΌΡ‹ сСгодня ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ компилятор ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π» быстрСС? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (AST) ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ?

Π’ этой ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказано, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Python прСобразуСтся Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (AST). Π‘ΠΎΠΎΡ€ΡƒΠ΄ΠΈΠ² AST вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ смоТСтС ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ поиску возмоТностСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ прСобразования вашСго ΠΊΠΎΠ΄Π°. Однако ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ оптимизация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Python Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ способами ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТна.

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΠΎ

Как ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ вычисляСт выраТСния ΠΈΠ· вашСго ΠΊΠΎΠ΄Π° Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС?
Для этого ΠΎΠ½ сначала ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AST.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. image loader. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Π’ 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 Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. . ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

Бпособ 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.

ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. photo. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python-photo. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° photo. Никого Π½Π΅ интСрСсуСт, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ связанный список β€” всСм Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря Docker.

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.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *