12.1. Введение¶
Python приложения часто используют пакеты и модули, не входящие в стандартную
библиотеку. Приложениям иногда нужна специфичная версия библиотеки, потому что
приложение может требовать, чтобы конкретная ошибка была исправлена или приложение
может быть написано, используя устаревший версию интерфейса библиотеки.
Это означает, что иногда невозможно для одной установки Python соответствовать
каждому приложению. Если приложение A требует версию 1.0 некого модуля, а
приложение B требует версию 2.0, то требования конфликтуют и установка либо версии
1.0, либо 2.0 оставит одно из приложений нерабочим.
Решение этой проблемы заключается в создании ,
отдельное дерево каталогов, которое содержит инсталляцию Python для конкретной версии
Python, плюс ряд дополнительных пакетов.
Как работает виртуальная среда?
Что именно имеется ввиду под «активировать» среду? Понимание того, что именно происходит под капотом, может быть очень важно для разработчика, особенно когда вам нужно понять выполнение виртуальной среды, разрешение зависимостей, и так далее. Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python
С «деактивированной» средой запускаем:
Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python. С «деактивированной» средой запускаем:
Shell
$ which python
/usr/bin/python
1 2 |
$which python usrbinpython |
Теперь активируем и снова запустим команду:
Python
$ source env/bin/activate
(env) $ which python
/Users/michaelherman/python-virtual-environments/env/bin/python
1 2 3 |
$source envbinactivate (env)$which python Usersmichaelhermanpython-virtual-environmentsenvbinpython |
Активировав среду, мы теперь получаем другой путь к исполнимому файлу python, так как в активной среде, переменная среды $PATH несколько отличается.
Обратите внимание на разницу между первым путем в $PATH до и после активации:
Python
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate
(env) $ echo $PATH
/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
1 2 3 4 5 6 |
$echo$PATH usrlocalbinusrbinbinusrsbinsbin $source envbinactivate (env)$echo$PATH Usersmichaelhermanpython-virtual-environmentsenvbinusrlocalbinusrbinbinusrsbinsbin |
В последнем примере, каталог bin нашей виртуальной среды теперь находится в начале пути. Это значит, что это первый каталог в поиске, когда мы запускаем исполняемый файл в командной строке. Таким образом, оболочка использует экземпляр нашей виртуальной среды в Python, а не в системной версии.
Это наталкивает на вопросы:
- В чем разница между этими исполняемыми файлами?
- Каким образом виртуальная среда исполняемого файлаPython может использовать что-либо, кроме системных сайт-пакетов?
Это можно объяснить тем, как Python запускается и где он расположен в системе. Нет разницы между двумя исполняемыми файлами Python. Суть заключается в расположении каталога
Когда Python запускается, он ищет путь своего двоичного файла (в виртуальной среде он является копией или символической ссылке системного бинарного файла Python). Далее, он устанавливает расположение sys.prefix и sys.exec_prefix согласно с этим расположением, опуская часть bin в пути.
Путь, находящийся в sys.prefix далее используется для поиска каталога site-packages, путем поиска по связанного с ним пути lib/pythonX.X/site-packages/, где Х.Х – это версия используемого вами Python.
В нашем примере, бинарный файл расположен в /Users/michaelherman/python-virtual-environments/env/bin, это значит, что sys.prefix может быть /Users/michaelherman/python-virtual-environments/env, следовательно, используемый каталог site-packages может быть /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages. Наконец, этот путь наложен в массиве sys.path, который содержит все расположения, которые пакет может использовать.
7 ответов
Лучший ответ
В вашем конкретном случае похоже, что вы пытаетесь импортировать из сценариев myapp.py и TestCase.py. Из myapp.py сделать
Так как он находится в той же папке. Для TestCase.py сделайте
Однако , это будет работать, только если вы импортируете TestCase из пакета. Если вы хотите напрямую запустить , вам придется возиться с вашим путем. Это можно сделать в Python:
Хотя, как правило, это не рекомендуется.
В общем, если вы хотите, чтобы другие люди использовали ваш пакет Python, вы должны использовать создать скрипт установки. Таким образом, любой может легко установить ваш пакет с помощью команды, подобной , и он будет доступен везде на их компьютере. Если вы серьезно относитесь к пакету, вы можете даже добавить его в индекс пакетов Python, PyPI.
85
David Robinson
21 Фев 2012 в 18:46
в Windows 10 по умолчанию устанавливается в ‘Program Files / PythonXX / Lib / site-packages’, который является каталогом, требующим административных привилегий. Поэтому я исправил проблему, запустив pip install от имени администратора (вы должны открыть командную строку от имени администратора, даже если вы вошли в систему с учетной записью администратора). Также безопаснее вызывать pip из python. например, вместо
2
sziraqui
21 Авг 2018 в 09:12
Экспортный путь — это хороший способ. Другой способ — добавить .path к вашему местоположению пакетов сайта. На моем mac мой python хранит пакеты сайтов в / Library / Python, показанном ниже
Я создал файл с именем awesome.pth в /Library/Python/2.7/site-packages/awesome.pth и в файле поместил следующий путь, который ссылается на мои удивительные модули
11
jmontross
20 Май 2013 в 23:36
В вашем первом каталоге myapp вы можете добавить файл setup.py и добавить два кода Python в setup.py
В вашем первом каталоге myapp в командной строке используйте pip install -e. установить пакет
3
未来陆家嘴顶尖的投资人
28 Окт 2017 в 11:30
Можешь попробовать
Потому что имя вашего проекта совпадает с myapp.py, что делает его поиск в документе проекта первым
8
阿东刘
6 Мар 2017 в 13:54
Функция ищет файлы в вашей среде PYTHONPATH. переменная и ваш локальный каталог. Таким образом, вы можете либо поместить все свои файлы в один каталог, либо экспортировать путь, набрав в терминале:
39
Michael
25 Янв 2017 в 11:16
В моем случае это был сюрприз для Windows и Python, несмотря на то, что имена файлов Windows не чувствительны к регистру, импорт Python. Поэтому, если у вас есть файл, вам нужно импортировать это имя как есть.
astrowalker
17 Май 2018 в 09:31
Настройка pipenv в PyCharm
Процесс настройки pipenv в PyCharm:
- В настройках откройте вкладку «Project Interpreter» —
- Нажмите на шестеренку рядом с выпадающим списком и выберите «Add».
- В списке слева выберите «Pipenv Environment».
- Далее вы можете создать новое окружение «New environment» или использовать существующее «Existing environment».
После того как все шаги выполнены, для текущего проекта устанавливается новая среда pipenv и устанавливаются пакеты, перечисленные в Pipfile.
Если вы открываете какой-либо проект с добавленным файлом Pipfile, но в нем не настроен интерпретатор, PyCharm предложит вам использовать среду Pipenv. Если вы выберете эту опцию, PyCharm автоматически установит для вас pipenv.
Если PyCharm покажет сообщение об ошибке: Pipenv executable is not found, введите правильный путь к исполняемому файлу в настройках «Pipenv Environment», например: C:\Users\jetbrains\AppData\Roaming\Python\Python37\Scripts\pipenv.exe (Windows).
12.1. Introduction¶
Python applications will often use packages and modules that don’t
come as part of the standard library. Applications will sometimes
need a specific version of a library, because the application may
require that a particular bug has been fixed or the application may be
written using an obsolete version of the library’s interface.
This means it may not be possible for one Python installation to meet
the requirements of every application. If application A needs version
1.0 of a particular module but application B needs version 2.0, then
the requirements are in conflict and installing either version 1.0 or 2.0
will leave one application unable to run.
The solution for this problem is to create a , a
self-contained directory tree that contains a Python installation for a
particular version of Python, plus a number of additional packages.
Виртуальные окружения
Решение очевидно — у каждого проекта должен быть свой интерпретатор Python,
со своей собственной изолированной директорией . Это и есть
основная идея, стоящая за виртуальными окружениями. Виртуальное окружение —
это самостоятельная копия интерпретатора со своими пакетами.
Как создавать виртуальные окружения
Начиная с Python версии 3.5 (на данный момент это самая старая из официально
поддерживаемых версий языка, так что справедливо ожидать, что как минимум
везде установлен Python 3.5 или новее), создать виртуальное окружение стало
очень просто:
Например, допустим, что мы работаем над проектом :
Создавать виртуальное окружения рядом с кодом — это распространённая практика,
так проще ничего не перепутать, но вообще виртуальное окружение может быть
где угодно, и директория тоже может называться как угодно
Обратите внимание,
что если вы создаете виртуальное окружение в директории под управлением
системы контроля версий (git), то его не нужно коммитить.
Лучше вообще добавьте его () в
В директорию будет скопирован тот самый интерпретатор, при помощи
которого виртуальное окружение и создавалось. Т.е. если
то в виртуальном окружении будет та же самая версия:
Активируем окружение
Посмотрим, что внутри директории :
Обратите внимание, что в директории есть некий файл в
нескольких вариантах для разных шеллов. Это и есть «точка входа» в виртуальное
окружение
Просто создать виртуальное окружение мало, нужно его активировать.
Но сначала проверим, какие и (исполняемые файлы) используются
в обычном режиме работы:
Это мой обычный Python, вне виртуального окружения, назовём его глобальным.
Теперь активируем виртуальное окружение:
Для Windows процесс активации будет отличаться (допустим, что виртуальное окружение
создано в ):
Обратите внимание, что приветствие шелла изменилось (добавилось ), чтобы
показать, что мы «внутри» виртуального окружения под названием. Теперь проверим еще раз, какие и используются:
Теперь проверим еще раз, какие и используются:
Посмотрите на пути — мы внутри виртуального окружения! Теперь можно смело
устанавливать любые пакеты, и это никак не повлияет на глобальный Python или
на другие виртуальные окружения:
Можно запускать любые файлы, и они будут иметь доступ к установленным пакетам:
IDE тоже нужно настроить, указав путь к внутри виртуального
окружения, тогда редактор сможет лучше вам помогать.
По завершению работы с виртуальным окружением можно просто набрать ,
либо закрыть окно терминала:
И мы видим, что команда снова вызывает глобальный интерпретатор.
При этом виртуальное окружение осталось в своей директории, оно просто не
активно. В следующий раз, когда будет нужно поработать с виртуальным
окружением, не забудьте снова его активировать.
Виртуальное окружение можно полностью удалить, когда оно перестанет быть
нужным:
В идеале, у вас должна быть возможность в любой момент удалить и пересоздать
виртуальное окружение заново, для этого храните список зависимостей проекта и
содержите его в актуальном состоянии (например, в ).
В процессе разработки могут случиться всякие казусы с зависимостями,
и иногда проще пересоздать виртуальное окружение заново, чем пытаться
починить сломанное.
Вот так можно работать с виртуальными окружениями в Python. Всегда устанавливайте
зависимости проектов только в изолированные виртуальные окружения. Не смешивайте
зависимости разных проектов в одном окружении.
Когда в инструкции по установке библиотеки написано ,
подразумевается, что у читателя есть понимание, что он делает. Думаю,
разработчики библиотек не пишут про создание виртуальных окружений
только потому, что это сильно раздуло бы все инструкции.
Чем хорош Pipenv
Рано или поздно, каждый разработчик сталкивается с проблемой контроля версий пакетов pip и настройкой виртуального окружения. С помощью Pipenv вы можете:
- Управлять окружениями (env);
- Управлять пакетами: устанавливать, удалять, обновлять (pip);
- Устанавливать детерминированный набор пакетов (Pipfile.lock).
Requirements.txt больше не нужен
Для своей работы менеджер использует 2 файла: (по сути замена requirements.txt) и (связывает версии пакетов, тем самым обеспечивая дополнительную безопасность).
Когда вы запускаете проект с Pipenv, он автоматически создает виртуальную среду для текущего проекта, даже если вы еще не используете ее. Pipenv управляет зависимостями, отказавшись от привычного , и заменяя его на новый документ под названием . Когда вы устанавливаете библиотеку с помощью Pipenv, файл для проекта автоматически обновляется с указанием сведений об этой установке, включая информацию о версии, расположение хранилища Git, путь к файлу и другую информацию.
Пример файла
Ваше приложение может зависеть от конкретной версии библиотеки, а эта библиотека может зависеть от конкретной версии другой библиотеки. Если производить настройку вручную, во всем этом очень просто запутаться . Pipenv создан, чтобы облегчить эту задачу. Он отслеживает дерево взаимозависимостей вашего приложения в файле с именем В свою очередь, также проверяет, используются ли корректные версии зависимостей.
Пример файла
Pipenv удобен, когда над проектом работают несколько разработчиков. Рассмотрим простой пример — компания ведет разработку своего корпоративного сайта. Мария работает над вкладкой «Отчеты», Иван — над вкладкой «Чат».
- Для того чтобы отчеты создавались быстрее, Мария решает обновить некоторые питон-библиотеки.
- В течение 2-х дней она разрабатывает новый функционал для отчетов.
- Мария фиксирует изменения в git репозитории, но забывает запустить . Файл остается в репозитории со старыми версиями библиотек.
- Иван затягивает из репозитория изменения Марии, и внезапно выясняется, что его вкладка «Чат» стала выпадать с ошибкой.
- Помимо этого, CI сборка тоже сломалась
Требуется время, чтобы понять, что проблема в файле , где находятся старые версии библиотек.
Если бы Иван и Мария использовали Pipenv, был бы автоматически обновлен и включен в коммит Марии. Они бы сэкономили время и завершили свой продукт быстрее. Вот что делает Pipenv таким важным.
Возможность создавать собственные шорткаты
Pipenv позволяет создавать собственные шорткаты (сокращения) в секции файла
Теперь в консоли вы можете вызвать шорткат командой
Автоматизация рутинных задач
Больше не придется тратить время на выполнение рутинных задач, выискивая причины отсутствия синхронизации и возникновения ошибок в версиях. Всю рутинную работу pipenv берет на себя:
- автоматически генерирует ;
- автоматически удаляет/добавляет записи в при установке/удалении пакетов;
- автоматически создает virtualenv;
- автоматически подгружает данные из файлов и т.д.
Установка и создания окружения с virtualenv
Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:
Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:
Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:
- PermissionError: Permission denied: ‘/usr/local/lib/python3.6’
- Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv
Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:
Я использую Python 3.6, и так я создам окружение в папке projectname/venv:
Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:
Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:
Активация и выход из окружения
Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.
В случаях с Linux указываем полный путь до venv/bin/activate:
Для активации в Windows, в папке venv\Scripts есть несколько файлов:
- activate.ps1 — для активации через Powershell;
- activate.bat — для активации через CMD.
Для активации просто укажите полный путь до файла. Например:
О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:
Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:
Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.
Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:
Для CMD нужно указать путь до файла «venv\Scripts\deactivate.bat».
virtualenvwrapper¶
Виртуальные окружения создаются с помощью virtualenvwrapper.
Установка virtualenvwrapper с помощью pip:
$ sudo pip3.7 install virtualenvwrapper
После установки, в файле .bashrc, находящимся в домашней папке текущего
пользователя, нужно добавить несколько строк:
export VIRTUALENVWRAPPER_PYTHON=/usrlocalbinpython3.7 export WORKON_HOME=~/venv . usrlocalbinvirtualenvwrapper.sh
Если вы используете командный интерпретатор, отличный от bash,
посмотрите, поддерживается ли он в
документации
virtualenvwrapper. Переменная окружения VIRTUALENVWRAPPER_PYTHON
указывает на бинарный файл командной строки Python, WORKON_HOME – на
расположение виртуальных окружений. Третья строка указывает, где
находится скрипт, установленный с пакетом virtualenvwrapper. Для того,
чтобы скрипт virtualenvwrapper.sh выполнился и можно было работать с
виртуальными окружениями, надо перезапустить bash.
Перезапуск командного интерпретатора:
$ exec bash
Установка пакетов¶
Например, установим в виртуальном окружении пакет simplejson.
(pyneng)$ pip install simplejson ... Successfully installed simplejson Cleaning up...
Если перейти в интерпретатор Python и импортировать simplejson, то он доступен
и никаких ошибок нет:
(pyneng)$ python >>> import simplejson >>> simplejson <module 'simplejson' from '/home/vagrant/venv/pyneng-py3-7/lib/python3.7/site-packages/simplejson/__init__.py'> >>>
Но если выйти из виртуального окружения и попытаться сделать то же
самое, то такого модуля нет:
(pyneng)$ deactivate $ python >>> import simplejson Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'simplejson' >>>
Ошибка: ImportError: нет модуля с именем selnium
y http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>le=»margin-bottom:5px;»>Теги: selenium python
Общие скриншоты отчетов об ошибках:Решение нужно только переустановить селен, метод установки делится на:
1. Используйте инструмент установки pip (этот инструмент поставляется с Python2.7)
Сначала откройте рабочее окно с помощью комбинации клавиш WIN + R, введите CMD, чтобы открыть окно DOS. Затем введите
Например:
2. Если у вас уже есть установочный пакет Selen, вы можете передатьФайлы для установки
Например: Разархивируйте файл, как показано на рисунке: Затем установите с помощью следующих двух команд (работа в окне DOS)
Интеллектуальная рекомендация
1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…
Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…
package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…
Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …
тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …
Вам также может понравиться
D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…
Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…
calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…
Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…
Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …
12.3. Managing Packages with pip¶
You can install, upgrade, and remove packages using a program called
pip. By default will install packages from the Python
Package Index, <https://pypi.org>. You can browse the Python
Package Index by going to it in your web browser.
has a number of subcommands: “install”, “uninstall”,
“freeze”, etc. (Consult the guide for
complete documentation for .)
You can install the latest version of a package by specifying a package’s name:
(tutorial-env) $ python -m pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas Running setup.py install for novas Successfully installed novas-3.1.1.3
You can also install a specific version of a package by giving the
package name followed by and the version number:
(tutorial-env) $ python -m pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests Successfully installed requests-2.6.0
If you re-run this command, will notice that the requested
version is already installed and do nothing. You can supply a
different version number to get that version, or you can run to upgrade the package to the latest version:
(tutorial-env) $ python -m pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 Uninstalling requests-2.6.0: Successfully uninstalled requests-2.6.0 Successfully installed requests-2.7.0
followed by one or more package names will remove the
packages from the virtual environment.
will display information about a particular package:
(tutorial-env) $ pip show requests --- Metadata-Version: 2.0 Name: requests Version: 2.7.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.com License: Apache 2.0 Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages Requires:
will display all of the packages installed in the virtual
environment:
(tutorial-env) $ pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) requests (2.7.0) setuptools (16.0)
will produce a similar list of the installed packages,
but the output uses the format that expects.
A common convention is to put this list in a file:
(tutorial-env) $ pip freeze > requirements.txt (tutorial-env) $ cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0
The can then be committed to version control and
shipped as part of an application. Users can then install all the
necessary packages with :
(tutorial-env) $ python -m pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) ... Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) ... Collecting requests==2.7.0 (from -r requirements.txt (line 3)) ... Installing collected packages: novas, numpy, requests Running setup.py install for novas Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0
has many more options. Consult the
guide for complete documentation for . When you’ve written
a package and want to make it available on the Python Package Index,
consult the guide.
12.2. Создание виртуальных окружений¶
Модуль для создания и управления виртуальными окружениями называется
. обычно устанавливает самую последнюю версию Python,
которая доступна. Если у вас есть несколько версий Python на вашей системе,
то вы можете выбрать конкретную версию Python, выполнив или какую версию вы
хотите.
Чтобы создать виртуальную среду, выберите каталог, в который необходимо
поместить ее, и запустите модуль как сценарий с путём к каталогу:
python3 -m venv tutorial-env
При этом будет создан каталог , если он не существует, а также
создать внутри нее каталоги, содержащие копию Python интерпретатор,
стандартная библиотека и различные вспомогательные файлы.
Общее расположение каталога для виртуальной среды . Это имя сохраняет
каталог скрытым в оболочке и, таким образом, отходит от пути, давая ему
имя, объясняющее, почему каталог существует. Это также, предотвращает
конфликты с файлами определений переменных среды поддерживаемыми
некоторыми инструментами.
После создания виртуального окружения его можно активировать.
На Windows, выполните:
tutorial-env\Scripts\activate.bat
На Unix или MacOS, выполните:
source tutorial-envbinactivate
(Этот скрипт написана для оболочки bash. Если используется csh или
fish оболочки, ито существуют альтернативы и ,
которые вам следует использовать вместо этого.)
Активируя виртуальное окружение вы изменяете ваше приглашение оболочки, чтобы показывать,
какое виртуальное окружение вы используете, и модифицируете это окружение так, что запуск
даст ваш конкретную версию и установку Python. Например:
Зачем нам все эти детали?
Очень важно иметь представление об этом, так как по умолчанию, каждый объект вашей системы будет использовать одинаковые каталоги для хранения и разрешения пакетов (сторонних библиотек. На первый взгляд это не выглядит чем-то значительным
Это так, но только в отношении системных пакетов, являющихся частью стандартной библиотеки Python – но сторонние пакеты – это другое дело.
Представим следующий сценарий, где у вас есть два проекта: проект А и проект Б, которые оба имеют зависимость от одной и той же библиотеки – проект В. Проблема становится явной, когда мы начинаем запрашивать разные версии проекта В. Может быть так, что проект А запрашивает версию 1.0.0, в то время как проект Б запрашивает более новую версию 2.0.0, к примеру.
Это большая проблема Python, поскольку он не может различать версии в каталоге «site-packages». Так что обе версии 1.0.0 и 2.0.0 будут находиться с тем же именем в одном каталоге:
Shell
/System/Library/Frameworks/Python.framework/Versions/3.5/Extras/lib/python/ProjectC
1 | SystemLibraryFrameworksPython.frameworkVersions3.5ExtraslibpythonProjectC |
И так как проекты хранятся в соответствии с их названиями, то нет различий между версиями. Таким образом, проекты А и Б должны будут использовать одну и ту же версию, что во многих случаях неприемлемо.
Тут-то и вступает в игру виртуальная среда (вместе с инструментами virtualenv/ven)
Использование PIP
PIP — система управления пакетами для установки и управления программными пакетами на Python.
Основные команды pip
# Установка пакета pip install имя_пакета # Обновление пакета pip install -U имя_пакета # Удаление пакета pip uninstall имя_пакета - удаление пакета # Вывод установленных пакетов pip freeze # Просмотр версии pip pip --version # Обновление pip pip install -U pip
Файл requirements.txt
Файл содержит вывод команды и является списком зависимостей, которые необходимо установить в виртуальное окружение для работы приложения.
Пример содержимого requirements.txt:
asgiref==3.4.1 Django==3.2.7 pytz==2021.1 sqlparse==0.4.2 typing-extensions==3.10.0.2
где:
- Django — имя пакета;
- 3.2.7 — версия пакета.
Вместо обозначения == может встретиться >=, что означает версию равную или выше.
Восстановление виртуального окружения с помощью requirements.txt
С помощью requirements.txt можно выполнить рекурсивную установку пакетов. В этом случае нет необходимости устанавливать пакеты вручную.
Выполнить установку можно командой:
pip install -r requirements.txt
12.2. Creating Virtual Environments¶
The module used to create and manage virtual environments is called
. will usually install the most recent version of
Python that you have available. If you have multiple versions of Python on your
system, you can select a specific Python version by running or
whichever version you want.
To create a virtual environment, decide upon a directory where you want to
place it, and run the module as a script with the directory path:
python3 -m venv tutorial-env
This will create the directory if it doesn’t exist,
and also create directories inside it containing a copy of the Python
interpreter and various supporting files.
A common directory location for a virtual environment is .
This name keeps the directory typically hidden in your shell and thus
out of the way while giving it a name that explains why the directory
exists. It also prevents clashing with environment variable
definition files that some tooling supports.
Once you’ve created a virtual environment, you may activate it.
On Windows, run:
tutorial-env\Scripts\activate.bat
On Unix or MacOS, run:
source tutorial-envbinactivate
(This script is written for the bash shell. If you use the
csh or fish shells, there are alternate
and scripts you should use
instead.)
Activating the virtual environment will change your shell’s prompt to show what
virtual environment you’re using, and modify the environment so that running
will get you that particular version and installation of Python.
For example:
Заключение
Я надеюсь, что эта статья помогла вам и ответила на все ваши запросы относительно в питоне.
Связанная статья: Как исправить “ImporteRor: Нет модуля по имени Pandas”
Пожалуйста, Подписаться нашему Канал и Оставайтесь настроиться Для более интересных Статьи в будущем. Счастливое обучение!
Авторы : Шубхам Сайон Rashi Agarwal
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @:
- Заработка
- Linkedin.