Б41 Чистый Python. Тонкости программирования для профи. Спб.: Питер



Download 6,94 Mb.
Pdf ko'rish
bet77/80
Sana24.02.2022
Hajmi6,94 Mb.
#212875
1   ...   72   73   74   75   76   77   78   79   80
Bog'liq
978544610803 Chisty Python Tonko

Виртуальная среда — это изолированная среда Python. Физически она 
располагается внутри папки, содержащей все пакеты и другие программ-
ные средства, от которых они зависят, в виде библиотек с нативным (плат-
форменно-ориентированным) кодом и средой выполнения интерпрета-
тора, в которых нуждается проект Python. (За кадром, чтобы сэкономить 
место, эти файлы могут быть символическими ссылками, а не реальными 
копиями.)
Чтобы продемонстрировать работу виртуальной среды, я представлю не-
большую пошаговую демонстрацию, в которой мы выполним настройку 
новой виртуальной среды (или virtualenv, как ее называют для краткости), 
а затем установим в нее сторонний пакет.
Прежде всего проверим, где в настоящее время располагается глобальная 
среда Python. В Linux или macOS для проверки пути к менеджеру пакетов 
pip
мы можем использовать инструмент командной строки 
which
:
$ which pip3 
/usr/local/bin/pip3
Я обычно размещаю свои виртуальные среды прямо в папки проектов, что-
бы держать их в безупречном виде и отделенными от остальных. Но вы так-
же можете где-нибудь иметь специальный каталог «python-environments», 
который содержит все ваши среды для проектов. Выбор за вами.
Давайте создадим новую виртуальную среду Python:
$ python3 -m venv ./venv


272 Глава 8 • Питоновские методы повышения производительности 
Эта команда за одну минуту создаст новую папку 
venv
в текущем каталоге, 
а также заполнит ее базовой средой Python 3:
$ ls venv/ 
bin Include Lib pyvenv.cfg
Если вы проверите активную версию 
pip
(командой 
which
), то увидите, 
что она по-прежнему указывает на глобальную среду, в моем случае 
/usr/
local/bin/pip3
:
(venv) $ which pip3 
/usr/local/bin/pip3
Это означает, что если установить пакеты сейчас, то они по-прежнему 
окажутся в глобальной среде Python. Одного создания папки виртуальной 
среды недостаточно — вам нужно явным образом активировать новую 
виртуальную среду, чтобы последующие выполнения команды 
pip
ука-
зывали на нее:
$ source ./venv/bin/activate 
(venv) $
Выполнение команды 
activate
конфигурирует текущий сеанс вашей 
оболочки, чтобы вместо этого использовать Python и команды 
pip
из 
виртуальной среды
1
.
Обратите внимание на то, как это изменило вид подсказки в строке 
команд ной оболочки, и теперь она содержит название активной вирту-
альной среды в круглых скобках: 
(venv)
. Давайте проверим, какой ис-
полняемый файл 
pip
теперь активен:
(venv) $ which pip3 
/Users/dan/my-project/venv/bin/pip3
Как видите, выполнение команды 
pip3
теперь будет запускать ту версию, 
которая находится в виртуальной среде, а не глобальной. То же касается 
1
В Windows команда 
activate
выполняется напрямую, то есть ее не нужно загружать 
вместе с источником.


8 .2 . Изоляция зависимостей проекта при помощи Virtualenv 273
и исполняемого файла интерпретатора Python. Выполнение 
python
из 
командной строки теперь также загрузит интерпретатор из папки 
venv
:
(venv) $ which python 
/Users/dan/my-project/venv/bin/python
Обратите внимание: она по-прежнему представляет собой «чистую доску», 
абсолютно пустую среду Python. Выполнение команды 
pip
list
покажет 
почти пустой список установленных пакетов, который будет включать 
только базовые модули, необходимые для поддержки 
pip
как такового:
(venv) $ pip list 
pip (9.0.1) 
setuptools (28.8.0)
Давайте пойдем дальше и теперь установим пакет Python в виртуальную 
среду. Для этого вам следует применить знакомую команду 
pip
install
:
(venv) $ pip install schedule 
Collecting schedule
Downloading schedule-0.4.2-py2.py3-none-any.whl 
Installing collected packages: schedule 
Successfully installed schedule-0.4.2
Здесь вы заметите два важных изменения. Во-первых, для выполнения 
этой команды вам больше не будут нужны права доступа администра-
тора. И во-вторых, инсталляция или обновление пакета с активной вир-
туальной средой означают, что все файлы окажутся в подпапке каталога 
виртуальной среды.
По этой причине программные средства, от которых зависит ваш проект, 
будут физически отделены от всей другой среды Python в вашей системе, 
включая глобальную. Практически вы получаете клон среды выполнения 
Python, который предназначен только для одного проекта.
Еще раз выполнив 
pip
list
, вы увидите, что библиотека 
schedule
была 
успешно установлена в новую среду:
(venv) $ pip list 
pip (9.0.1) 


274 Глава 8 • Питоновские методы повышения производительности 
schedule (0.4.2) 
setuptools (28.8.0)
Если запустить сеанс интерпретатора Python командой 
python
или вы-
полнить им автономный файл .py, то он будет использовать интерпретатор 
Python и зависимости, установленные в эту виртуальную среду, — при 
условии, что эта среда по-прежнему активна в текущем сеансе оболочки.
Но как снова деактивировать или «покинуть» виртуальную среду? Ана-
логично команде 
activate
, существует команда 
deactivate
, которая воз-
вращает вас назад к глобальной среде:
(venv) $ deactivate 
$ which pip3 
/usr/local/bin
Использование виртуальных сред поможет сохранить вашу систему 
лаконичной, а ваши зависимости Python аккуратно организованными. 
В качестве практической рекомендации: все ваши проекты Python долж-
ны использовать виртуальные среды, чтобы отделять их зависимости от 
других и избегать конфликтов версий.
Понимание и использование виртуальных сред также направит вас по 
правильному пути использования более продвинутых методов управле-
ния зависимостями, таких как определение зависимостей проекта при 
помощи файлов 
requirements.txt
.
Если вы ищете материал с глубоким изложением этой темы и с дополни-
тельными советами по поводу производительности, обратитесь к моему Кур-

Download 6,94 Mb.

Do'stlaringiz bilan baham:
1   ...   72   73   74   75   76   77   78   79   80




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish