virtualenv - с высоты птичьего полета понимание - PullRequest
0 голосов
/ 18 ноября 2018

Использование Windows

Изучение virtualenv.Вот мое понимание этого и несколько вопросов, которые у меня есть.Пожалуйста, поправьте меня, если мое понимание неверно.

virtualenv - это среды, в которых ваши пип-зависимости и выбранная версия хранятся для конкретного проекта.Папка сделана для вашего проекта и внутри есть зависимости.

  1. Мне сказали, что вы не захотите сохранять свои скрипты .py в стороне от виртуальной ENV, если это так, как мне получить доступ к виртуальной среде, когда я хочу запустить этот проект?Откройте его в командной строке в source ENV/bin/activate, затем cd, где я храню свой сценарий?

  2. Запустив pip freeze, который создаст в этом файле файл require.txt.папка проекта, которая является просто TXT.Копия зависимостей этого виртуального env?

  3. Если я нахожусь во втором virutalenv, кому я могу импортировать требования другого virtualenv?Я был в документации, но я все еще не понимаю.

    $ env1 / bin / pip freeze> needs.txt

    $ env2 / bin / pip install -r требования.txt

Думаю, я запутался в описании "требований".Разве не лучше всегда называть наши требования, examples.txt?Если это так, то как env2 узнает, что я хочу env1 требований?

Спасибо за любую информацию или предложения.Очень благодарен за помощь.

Я создал virtualenv C:\Users\admin\Documents\Enviorments>virtualenv django_1 Используя базовый префикс 'c:\\users\\admin\\appdata\\local\\programs\\python\\python37-32' Новый исполняемый файл python в C:\Users\admin\Documents\Enviorments\django_1\Scripts\python.exe Installing setuptools, pip, wheel...done.

Как мне его активировать?source django_1/bin/activate не работает?

Я пробовал: source C:\Users\admin\Documents\Enviorments\django_1/bin/activate Каждый раз, когда я получаю: «источник» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

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

Ответ на ваш первый вопрос: да, для каждого проекта, который вы используете virtualenv, вам необходимо сначала его активировать.После активации при запуске сценария Python не только сценарии вашего проекта, но и любой сценарий Python будут использовать зависимости и конфигурацию активной среды Python.

Ответ на второй вопрос: pip freeze > requirements.txt создаст файл требованийв активной папке, а не в папке вашего проекта.Итак, допустим, что в вашем cmd / терминале вы находитесь в C:\Desktop, тогда файл требований будет создан там.Если вы находитесь в папке C\Desktop\myproject, файл будет создан там.Файл требований будет содержать пакеты, установленные на active virtualenv.

Ответ на 3-й вопрос связан со вторым.Просто вам нужно написать полный путь ко второму файлу требований.Так что, если вы находитесь в первом проекте и хотите установить пакеты из второго virtualenv, вы запускаете его как env2/bin/pip install -r /path/to/my/first/requirements.txt.Если в вашем терминале вы находитесь в активной папке, в которой нет файла require.txt, то при запуске pip install вы получите ошибку.Таким образом, команда не знает, какой файл требований вы хотите использовать, вы указываете его.

Я создал virtualenv C:\Users\admin\Documents\Enviorments>virtualenv django_1 Using base prefix 'c:\\users\\admin\\appdata\\local\\programs\\python\\python37-32' New python executable in C:\Users\admin\Documents\Enviorments\django_1\Scripts\python.exe Installing setuptools, pip, wheel...done.

Как мне его активировать?source django_1/bin/activate не работает?

Я пробовал: source C:\Users\admin\Documents\Enviorments\django_1/bin/activate Каждый раз, когда я получаю: 'источник' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

0 голосов
/ 18 ноября 2018
  1. Да, сохранение virtualenv отдельно от файлов вашего проекта - одна из концепций. virtualenvwrapper и pipenv работает так.Но лично, если я использую virtualenv в простейшей форме, я просто создаю каталог с тем же именем внутри каталога virtualenv (рядом с bin/) и сохраняю там файлы проекта.

  2. pip freeze выводит на консоль пакеты (и их версии), которые вы установили внутри virtualenv, с помощью pip.Если вы хотите сохранить эти требования в файле, вы должны сделать что-то вроде pip freeze > requirements.txt

  3. Есть несколько вариантов:

    • , вы можете активировать один virtualenv, затемперейдите (cd /path/to/venv2) к другому virtualenv.
    • вы можете скопировать файл requirements.txt из одного virtualenv и установить эти требования в своем втором virtualenv
0 голосов
/ 18 ноября 2018

* заявление об отказе от ответственности * В основном я использую среды conda вместо virtualenv, но я считаю, что большинство из них одинаковы для обоих из них и верно для вашего случая.

  1. Вы должны иметь доступ к своим сценариям из любой среды, в которой вы находитесь. Если у вас есть virtenvA и virtenvB, то вы можете получить доступ к своему сценарию из в любой из ваших сред . Все, что вам нужно сделать, это активировать один из них и затем запустить python /path/to/my/script.py, но вы должны убедиться, что установлены все зависимые библиотеки.

  2. Правильно, но для ясности файл требований содержит список зависимостей только по имени. Он не содержит никакого реального кода или пакетов. Вы можете распечатать файл требований, но он должен быть просто списком с именами пакетов и номерами их версий. Как pandas 1.0.1 numpy 1.0.1 scipy 1.0.1 и т. Д.

  3. В приведенных здесь строках кода вы должны экспортировать список зависимостей env1, а затем установить эти зависимости в env2. Если env2 был пуст, то теперь он будет просто копией env1, в противном случае он будет таким же, но со всеми добавленными пакетами env1, и если у него был другой номер версии некоторых из тех же пакетов, то это будет перезаписано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...