Может ли virtualenv включать необходимые пакеты проекта из site-packages

#python #virtualenv

#python #virtualenv

Вопрос:

Запуск командной строки:

 virtualenv --system-site-packages venv
  

Я ожидаю, что папка venv venvLibsite-packages будет содержать всю необходимую библиотеку из проектов, которые расположены в:
C:UsersXXXAppDataLocalProgramsPythonPython36Libsite-packages

Но это не так, установлено всего несколько.

Например, моя программа в настоящее время использует pdfminer , которая находится в

C:UsersXXXXAppDataLocalProgramsPythonPython36Libsite-packages

Я хочу, чтобы это было включено в venvLibsite-packages , но оно не копируется.

Любой совет?

Ответ №1:

--system-site-packages не копирует пакеты, это просто позволяет python из virtualenv получать доступ к пакетам в C:UsersXXXAppDataLocalProgramsPythonPython36Libsite-packages .

Невозможно скопировать пакеты, потому что они могут зависеть от каталога их установки. Если вы хотите, чтобы эти пакеты были в virtualenv, не используйте --system-site-packages и установите все пакеты в virtualenv.

Комментарии:

1. Привет, большое спасибо за ваш отзыв. Я не уверен, что понимаю цель виртуальной среды, если при ее создании отсутствует командная строка, которая может установить пакеты, необходимые для проекта. Мы можем читать дальше docs.python-guide.org/dev/virtualenvs что «virtualenv — это инструмент для создания изолированных сред Python. virtualenv создает папку, содержащую все необходимые исполняемые файлы для использования пакетов, которые понадобятся проекту Python. «Но если моя среда зависит от внешних библиотек, то использование ограничено. Каково ваше мнение по этому поводу? Для этого мне не хватает какой-либо команды?

2. Если у вас много виртуальных сред, они могут зависеть от внешних библиотек, но каждый отдельный venv изолирован друг от друга. У вас может быть venv с библиотекой xxx версии 1, которая зависит от yyy версии 2, и у вас может быть venv с библиотекой xxx версии 2, которая зависит от yyy версии 3, например.

3. Как мне «установить все пакеты в virtualenv»? Не с помощью команды virtualenv? Вы имеете в виду, что я просто устанавливаю pip в свой virtualenv или я просто копирую прошлые пакеты в свой проект «venv Lib site-packages»?

4. Смотрите мой ответ, который касается вашего последнего вопроса.

5. Большое спасибо за ваше время. После повторного выполнения виртуальной среды на другой машине я смог получить ожидаемый результат. Мне нужно было сначала активировать виртуальную среду, прежде чем я смогу установить требования. Когда я это сделал, он установил всю библиотеку в нужном месте

Ответ №2:

Среда virtualenv такая же, как если бы вы только что установили новую версию Python. У него нет пакетов, отличных от стандартных пакетов, поставляемых с Python. Если вам нужны другие пакеты, вы должны установить их с помощью ‘pip’ или, как вы бы сделали это с родной версией Python, которую вы используете.

Итак, в общем, просто сделайте pip install <packagename> .

Если вы часто обнаруживаете, что хотите создавать виртуальные среды со стандартным набором базовых пакетов, затем создайте requirements.txt файл со списком всех пакетов, которые вы хотите установить в качестве базовых, и выполните pip install -r requirements.txt внутри нового virtualenv, сразу после его создания.

Одна приятная вещь в virtualenv заключается в том, что она полностью ваша. Ваш пользователь владеет им на 100%, в отличие от базовой версии Python, которой владеет система. Для установки новых пакетов в базовую версию Python часто требуется иметь root-доступ (привилегии sudo). С virtualenvs вам не нужны специальные разрешения (на самом деле, вы все испортите, если будете использовать sudo в virtualenv), чтобы установить все нужные пакеты. Все, что вы делаете, находится в вашем собственном домашнем каталоге. Еще одна приятная вещь заключается в том, что когда вы закончите с virtualenv, вы просто удаляете корневой каталог, который его содержит.

Ответ №3:

Если использование virtualenv не обязательно, я бы предложил использовать Anaconda. Это в значительной степени облегчит ваше беспокойство.

Conda как менеджер пакетов помогает вам находить и устанавливать пакеты. По умолчанию уже установлено довольно много пакетов, чтобы быстро настроить вас для вашего проекта. Чтобы проверить список пакетов, установленных в терминале, введите: conda list, чтобы получить пакеты, установленные с помощью conda.

Если вам нужен пакет, для которого требуется другая версия Python, вам не нужно переключаться на другой менеджер среды, потому что conda также является менеджером среды.

С помощью всего лишь нескольких команд вы можете настроить совершенно отдельную среду для запуска этой другой версии Python, продолжая запускать вашу обычную версию Python в вашей обычной среде

Комментарии:

1. Спасибо. Проблема заключалась в том, что мне не удалось найти пакеты, необходимые для их правильной установки в моей виртуальной среде, используя «requirements.txt «. Я почему-то не смог сделать это на одной машине. Пакеты появлялись на моем диске C с python, а не с моим проектом. Но как только я переустановлю python на другой компьютер и должным образом активирую виртуальную среду, я смог установить пакеты в этой среде.