🐧 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Π² Python: руководство ΠΏΠΎ интСрфСйсу ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Python

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Π² Python

Π’ Python Π΅ΡΡ‚ΡŒ нСсколько способов Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux. Рассмотрим Π΄Π²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ subprocess

Один ΠΈΠ· способов - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ subprocess, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.

import subprocess

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls -l" Π² Linux
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

2. ΠœΠΎΠ΄ΡƒΠ»ΡŒ os

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ os, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.

import os

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "pwd" Π² Linux
result = os.system('pwd')
print(result)

Оба этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux ΠΈΠ· Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π²ΠΈΠ΄Π΅ тСкста ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ установлСны ΠΈ доступны Π² вашСй систСмС Linux ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… использованиСм Π² Python.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Π² Python

Python - ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ язык программирования. Он позволяСт Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Π² Python ΠΈ прСдоставим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°.

1. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля subprocess

Для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Linux Π² Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ subprocess. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π½ΠΎΠ²ΠΎΠΌ процСссС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ… выполнСния.


import subprocess

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls" (список Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅)
result = subprocess.run(["ls"], capture_output=True, text=True)
print(result.stdout)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "ls" с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ subprocess.run(). АргумСнт "capture_output=True" позволяСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π° "text=True" ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ тСкста. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

2. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ subprocess. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "grep" для поиска строк, содСрТащих ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ слово Π² Ρ„Π°ΠΉΠ»Π΅.


import subprocess

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "grep"
result = subprocess.run(["grep", "example", "file.txt"], capture_output=True, text=True)
print(result.stdout)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "grep" для поиска строк, содСрТащих слово "example" Π² Ρ„Π°ΠΉΠ»Π΅ "file.txt". АргумСнты ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ списка.

3. ΠŸΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ Linux

Python Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля subprocess. Пайплайн - это способ объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, Π³Π΄Π΅ Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ становится Π²Ρ…ΠΎΠ΄ΠΎΠΌ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.


import subprocess

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄ "ls" ΠΈ "grep"
ls_process = subprocess.Popen(["ls"], stdout=subprocess.PIPE)
grep_process = subprocess.Popen(["grep", "example"], stdin=ls_process.stdout, stdout=subprocess.PIPE)
ls_process.stdout.close()
output = grep_process.communicate()[0].decode()
print(output)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ объСдиняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls" ΠΈ "grep" Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½. Команда "ls" Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° "grep" ΠΈΡ‰Π΅Ρ‚ строки, содСрТащиС слово "example".

4. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ os.system()

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Linux Π² Python - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ os.system(). Π­Ρ‚Π° функция позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ выполнСния.


import os

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls"
os.system("ls")
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "ls" с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ os.system(). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π½Π° экран.

5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Linux Π² Python

Python прСдоставляСт мноТСство способов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Linux. Один ΠΈΠ· способов - использованиС модуля subprocess ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° communicate(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, содСрТащий Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°.


import subprocess

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls"
process = subprocess.Popen(["ls"], stdout=subprocess.PIPE)
output, error = process.communicate()
output = output.decode()
print(output)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ communicate() для получСния Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "ls". ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ "output" содСрТит ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы использования ΠΊΠΎΠΌΠ°Π½Π΄ Linux Π² Python. ΠœΡ‹ использовали ΠΌΠΎΠ΄ΡƒΠ»ΡŒ subprocess для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ создания ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ рассмотрСли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ os.system() для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ communicate() для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти знания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅Π³ΠΊΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux Π² своих Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Python Script to Execute Linux Commands

How to run Linux commands from python: Quick tutorial

60 Linux Commands you NEED to know (in 10 minutes)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”Œ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Python: простыС способы для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”ΠšΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ элСмСнта Π² спискС python?πŸ€”

πŸ”₯ Как Ρ€Π΅ΡˆΠΈΡ‚ΡŒ 8 Π·Π°Π΄Π°Π½ΠΈΠ΅ Π•Π“Π­ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π½Π° Python?

🐧 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Π² Python: руководство ΠΏΠΎ интСрфСйсу ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Python

Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ array Π² list Π² Python: простыС шаги ΠΈ совСты

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python для Windows: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python Π² venv: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ