ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΠ»Ρ Π»ΠΈΡΠ½ΡΡ Π½ΡΠΆΠ΄ Π΄ΠΎΠΌΠ° ΠΏΠΎΠ΄Π½ΡΠ» VSphere, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡ ΠΈ Ubuntu ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π΅ΡΠ΅ ΠΊΡΡΠΈ Π²ΡΡΠΊΠΈΡ Π²ΠΊΡΡΠ½ΡΡΠ΅ΠΊ, ΠΈ ΡΡΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ Π΄Π°Π΅Ρ ΡΡΠ°ΡΠΈΠΊΡ Π·Π° Π΄Π΅Π½ΡΠ³ΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠ²ΡΠ·ΠΊΠΎΠΉ ddclient + cloudflare.
ΠΡΠ΅ Π±ΡΠ»ΠΎ Ρ
ΠΎΡΠΎΡΠΎ, ΠΏΠΎΠΊΠ° ddclient Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ²ΡΡΡΠ² Π΅Π³ΠΎ, Ρ ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΡΡΡΠ»Π΅ΠΉ ΠΈ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ°Π»ΠΎ ΡΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ. Π ΠΈΡΠΎΠ³Π΅ Π²ΡΠ΅ Π²ΡΠ»ΠΈΠ»ΠΎΡΡ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ.
ΠΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ β Π΄ΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΊΠ°ΠΊ Β«ΡΡΠΎΒ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Ρ ΡΠ·Π½Π°Π» Π½Π° ΡΠ°ΠΉΡΠ΅ cloudflare, Π²ΡΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎΠ±
Π ΠΎΠ±ΡΠ΅ΠΌ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ Π±ΡΠ» Π²Π·ΡΡ Π²ΡΠ°ΠΏΠΏΠ΅Ρ
ΠΠ·ΡΠ» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ DNS ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ A Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π·ΠΎΠ½Ρ ΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·ΠΎΠ½.
ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ:
- Π‘ΠΊΡΠΈΠΏΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΏΠΈΡΠΎΠΊ Π·ΠΎΠ½ ΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π½ΠΈΠΌ Π² ΡΠΈΠΊΠ»Π΅
- Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·ΠΎΠ½Π΅ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ DNS Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° Π ΠΈΠ»ΠΈ ΠΠΠΠ ΠΈ ΡΠ²Π΅ΡΡΠ΅Ρ Public IP Ρ Π·Π°ΠΏΠΈΡΡΡ
- ΠΡΠ»ΠΈ IP ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ β ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ
- ΠΠ°ΡΡΠΏΠ°Π΅Ρ Π½Π° Π²ΡΠ΅ΠΌΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ .deb ΠΏΠ°ΠΊΠ΅Ρ, Π½ΠΎ Ρ Π² ΡΡΠΎΠΌ Π½Π΅ ΡΠΈΠ»Π΅Π½, Π΄Π° ΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ Π²ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΡΠΎΡΠ΅ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΠΎΠΏΠΈΡΠ°Π» Π² README.md Π½Π°
ΠΠΎ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΎΠΏΠΈΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ:
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ python3 ΠΈ python3-pip, Π΅ΡΠ»ΠΈ Π½Π΅Ρ β ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ (Π² Windows python3-pip ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Python)
- ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
python3 -m pip install -r requirements.txt
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠΊΡΠΈΠΏΡ
ΠΠ»Ρ Linux:chmod +x install.sh sudo ./install.sh
ΠΠ»Ρ Windows: windows_install.bat
- ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ΠΠ»Ρ Linux:sudoedit /etc/zen-cf-ddns.conf
ΠΠ»Ρ Windows:
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ» zen-cf-ddns.conf Π² ΠΏΠ°ΠΏΠΊΠ΅, ΠΊΡΠ΄Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ.
ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ JSON ΡΠ°ΠΉΠ», ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π» ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ 2 ΡΠ°Π·Π½ΡΠ΅ Π·ΠΎΠ½Ρ Π² Π½Π΅ΠΌ.
Π§ΡΠΎ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π·Π° ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ°ΠΌΠΈ?
install.sh Π΄Π»Ρ Linux:
- Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½Π°, Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π»ΠΎΠ³ΠΈΠ½Π°.
sudo useradd -r -s /bin/false zen-cf-ddns
- Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π»ΠΎΠ³Π° Π² /var/log/
- ΠΠ΅Π»Π°Π΅ΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° Π»ΠΎΠ³Π° Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- ΠΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΌΠ΅ΡΡΠ°ΠΌ (ΠΊΠΎΠ½ΡΠΈΠ³ Π² /etc, ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π² /usr/bin, ΡΠ°ΠΉΠ» ΡΠ»ΡΠΆΠ±Ρ Π² /lib/systemd/system)
- ΠΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΡΠ»ΡΠΆΠ±Π°
windows_install.bat Π΄Π»Ρ Windows:
- ΠΠΎΠΏΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ
- Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
ΠΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΡΠΊΡΠΈΠΏΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ, Π² Linux Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎ:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
Π΄Π»Ρ Windows ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ±ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ pythonw ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ(ΠΎΡΠ΅Π½Ρ Π»Π΅Π½Ρ ΠΌΠ½Π΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΡΠΆΠ±Ρ ΠΏΠΎΠ΄ Windows Π½Π° C#):
taskkill /im pythonw.exe
ΠΠ° ΡΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π½Π° Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅.
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ ΠΊΠΎΠ΄ Python, Π²ΠΎΡ
ΠΠΈΡΠ΅Π½Π·ΠΈΡ MIT, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°ΠΉΡΠ΅ Ρ ΡΡΠΈΠΌ Π΄ΠΎΠ±ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅.
P.S.: ΠΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΡΠ»ΡΠ½ΠΎ, Π½ΠΎ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΡΠ°.
UPD: 11.10.2019 17:37
ΠΠ°ΡΠ΅Π» Π΅ΡΠ΅ 1 ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ ΠΊΠ°ΠΊ Π΅Π΅ ΡΠ΅ΡΠΈΡΡ β Π±ΡΠ΄Ρ ΠΎΡΠ΅Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±Π΅Π· sudo python -m pip install -r …, ΡΠΎ ΠΈΠ· ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π½Ρ, Π° ΠΌΠ½Π΅ Π±Ρ Π½Π΅ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎΠ΄ sudo, Π΄Π° ΠΈ Π½Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΊΡΠ°ΡΠΈΠ²ΠΎ?
UPD: 11.10.2019 19:16 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ venv.
ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ΅Π»ΠΈΠ· Π½Π° Π΄Π½ΡΡ
Π±ΡΠ΄Π΅Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com