Как я могу составить список установленных пакетов в определенном virtualenv?
Вы можете cd
до YOUR_ENV/lib/pythonxx/site-packages/
и посмотреть, но есть ли какие-либо удобные способы?
pip freeze
укажите все установленные пакеты, включая системную среду.
Ответы
Ответ 1
Вызов pip
команды внутри virtualenv должен отображать пакеты, видимые/доступные в изолированной среде. Обязательно используйте последнюю версию virtualenv, которая по умолчанию использует опцию --no-site-packages
. Таким образом, целью использования virtualenv является создание среды python без доступа к пакетам, установленным в системном python.
Затем убедитесь, что вы используете команду pip
, предоставленную внутри virtualenv (YOUR_ENV/bin/pip
). Или просто активируйте virtualenv (source YOUR_ENV/bin/activate
) как удобный способ вызвать правильные команды для интерпретатора python или pip
~/Projects$ virtualenv --version
1.9.1
~/Projects$ virtualenv -p /usr/bin/python2.7 demoenv2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in demoenv2.7/bin/python2.7
Also creating executable in demoenv2.7/bin/python
Installing setuptools............................done.
Installing pip...............done.
~/Projects$ cd demoenv2.7/
~/Projects/demoenv2.7$ bin/pip freeze
wsgiref==0.1.2
~/Projects/demoenv2.7$ bin/pip install commandlineapp
Downloading/unpacking commandlineapp
Downloading CommandLineApp-3.0.7.tar.gz (142kB): 142kB downloaded
Running setup.py egg_info for package commandlineapp
Installing collected packages: commandlineapp
Running setup.py install for commandlineapp
Successfully installed commandlineapp
Cleaning up...
~/Projects/demoenv2.7$ bin/pip freeze
CommandLineApp==3.0.7
wsgiref==0.1.2
Что странно в моем ответе, так это то, что пакет wsgiref виден внутри virtualenv. Его из моего системного питона. В настоящее время я не знаю, почему, но, возможно, это отличается от вашей системы.
Ответ 2
Вы можете перечислить только пакеты в virtualenv
pip freeze --local
или
pip list --local
.
Этот параметр работает независимо от того, есть ли в каталоге virtualenv
глобальные пакеты сайтов.
Обратите внимание, что ограничение virtualenv
не использования пакетов глобальных сайтов не является ответом на проблему, потому что вопрос заключается в том, как отделить два списка, а не как ограничивать наш рабочий процесс, чтобы он соответствовал ограничениям инструментов.
Кредиты на комментарий @gvalkov здесь. Ср также этот вопрос.
Ответ 3
список установленных пакетов в virtualenv
шаг 1:
имя пользователя workon envname
Шаг 2:
замораживание контура
отобразятся все установленные пакеты и установленные пакеты и версии
Ответ 4
Если вы все еще немного смущены virtualenv
, вы можете не подобрать, как объединить отличные советы от ответов Иоанниса и Саши. То есть это основная команда, которая вам нужна:
/YOUR_ENV/bin/pip freeze --local
Это можно легко использовать в другом месте. Например. вот удобный и полный ответ, подходящий для того, чтобы все локальные пакеты были установлены во всех средах, которые вы установили через virtualenvwrapper:
cd ${WORKON_HOME:-~/.virtualenvs}
for dir in *; do [ -d $dir ] && $dir/bin/pip freeze --local > /tmp/$dir.fl; done
more /tmp/*.fl
Ответ 5
почему бы вам не попробовать список пипсов
Помните, что я использую pip версии 19.1 на python версии 3.7.3
Ответ 6
В моем случае версия фляги была видна только под, поэтому мне пришлось перейти в C:\Users\\AppData\Local\flask\venv\Scripts> pip freeze --local
Ответ 7
Если вы используете pip 19.0.3
и python 3.7.4
. Затем перейдите к команде pip list
в вашем virtualenv. Он покажет все установленные пакеты с соответствующими версиями.