какой самый простой способ удалить все пакеты, установленные с помощью pip?

<p>я пытаюсь исправить одну из моих virtualenvs - я хотел бы сбросить все установленные библиотеки обратно на те, которые соответствуют производству.</p><p>есть ли быстрый и простой способ сделать это с помощью pip?</p>

<p>я нашел этот фрагмент в качестве альтернативного решения. это более изящное удаление библиотек, чем переделка virtualenv:</p><pre><code>pip freeze | xargs pip uninstall -y </code></pre><hr><p>если у вас есть пакеты, установленные через vcs, вам нужно исключить эти строки и удалить пакеты вручную (повышено из комментариев ниже):</p><pre><code>pip freeze | grep -v "^-e" | xargs pip uninstall -y </code></pre>

<p>это будет работать для всех mac, windows и linux system . чтобы получить список всех пакетов pip в файле needs.txt (примечание: это перезапишет файл require.txt, если он существует, иначе создаст новый).</p><pre><code>pip freeze > requirements.txt </code></pre><p>теперь, чтобы удалить один за другим</p><pre><code>pip uninstall -r requirements.txt </code></pre><p>если мы хотим удалить все сразу, то </p><pre><code>pip uninstall -r requirements.txt -y </code></pre><p>если вы работаете над существующим проектом, в котором есть файл <code>requirements.txt</code>, а ваша среда отличается, просто замените <code>requirements.txt</code> из приведенных выше примеров на <code>toberemoved.txt</code>. затем, выполнив описанные выше шаги, вы можете использовать <code>requirements.txt</code> для обновления вашей теперь чистой среды.</p><p>и для одной команды без создания какого-либо файла (как предложил joeb).</p><pre><code>pip uninstall -y -r <(pip freeze) </code></pre>

<p>я думаю, что это работает с последними </p><pre><code>virtualenv --clear myenv </code></pre>

<p>я хотел поднять этот ответ в разделе комментариев, потому что это одно из самых элегантных решений в этой ветке. полная оценка за этот ответ идет к <a href="https://stackoverflow.com/users/174652/joeb">@joeb</a> .</p><pre><code>pip uninstall -y -r <(pip freeze) </code></pre><p>это прекрасно сработало для случая использования очистки папки пользовательских пакетов вне контекста virtualenv, который не обрабатываются многими из приведенных выше ответов.</p><p><em>edit: кто-нибудь знает, как заставить эту команду работать в makefile?</em></p><h2>бонус: псевдоним bash</h2><p>я добавляю это в свой профиль bash для удобства:</p><pre><code>alias pipuninstallall="pip uninstall -y -r <(pip freeze)" </code></pre><p>затем запустите:</p><pre><code>pipuninstallall </code></pre><h2>альтернатива для пипенв</h2><p>если вы используете <a href="https://github.com/pypa/pipenv">pipenv</a> вы можете просто запустить:</p><pre><code>pipenv uninstall --all </code></pre>

<h3>способ 1 (с <code>pip freeze</code>)</h3><pre><code>pip freeze | xargs pip uninstall -y </code></pre><h3>способ 2 (с <code>pip list</code>)</h3><pre><code>pip list | awk '{print $1}' | xargs pip uninstall -y метод 3 (с virtualenv)virtualenv --clear myenv 

другие ответы, которые используют pip list или pip freeze<strong> должны включать --local </strong>иначе он также удалит пакеты, найденные в общих пространствах имен. так вот фрагменты, которые я регулярно использую pip freeze --local | xargs pip uninstall -y или же pip list --local | py -x "print(x.split()[0])" | xargs pip uninstall -y узнайте больше об этом поведении, введя pip freeze --help

самый быстрый способ - полностью переделать virtualenv. я предполагаю, что у вас есть файл require.txt, который соответствует производству, если нет:# on production: pip freeze > reqs.txt # on your machine: rm $virtualenv\_directory mkdir $virtualenv_directory pip install -r reqs.txt 

в windows, если ваш path настроен правильно, вы можете использовать:pip freeze > unins && pip uninstall -y -r unins && del unins это должно быть похоже на unix-подобные системы:pip freeze > unins && pip uninstall -y -r unins && rm unins просто предупреждение о том, что это не совсем верно, так как вы можете столкнуться с такими проблемами, как «файл не найден», но, тем не менее, это может сработать в некоторых случаях. правка: для ясности: unins - произвольный файл, в который записаны данные при выполнении этой команды: pip freeze > uninsэтот файл, который он написал в свою очередь, затем используется для удаления вышеупомянутых пакетов с подразумеваемым согласием/предварительным одобрением через pip uninstall -y -r uninsфайл окончательно удаляется после завершения.

используя <a href="https://pypi.python.org/pypi/virtualenvwrapper">virtualenvwrapper function:wipeenv смотрите <a href="http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html?highlight=wipeenv#wipeenv">документация wipeenv 

для пользователей windows это то, что я использую на<strong> windows powershell </strong> pip uninstall -y (pip freeze) 

это старый вопрос, который я знаю, но я наткнулся на него, поэтому для дальнейшего использования вы можете сделать это:pip uninstall [options] <package> ... pip uninstall [options] -r <requirements file> ... <blockquote> -r, --requirement файл  <blockquote> удалите все пакеты, указанные в данном файле требований. эта опция может быть использована несколько раз. </blockquote> </blockquote>из <a href="https://pip.pypa.io/en/stable/reference/pip_uninstall/">pip документации версия 8.1

для меня это был самый простой способ удалить все пакеты python.from pip import get_installed_distributions from os import system for i in get_installed_distributions(): system("pip3 uninstall {} -y -q".format(i.key)) 

кроссплатформенная поддержка с использованием только pip:#!/usr/bin/env python from sys import stderr from pip.commands.uninstall import uninstallcommand from pip import get_installed_distributions pip_uninstall = uninstallcommand() options, args = pip_uninstall.parse_args([ package.project_name for package in get_installed_distributions() if not package.location.endswith('dist-packages') ]) options.yes = true # don't confirm before uninstall # set options.require_venv to true for virtualenv restriction try: print pip_uninstall.run(options, args) except oserror as e: if e.errno != 13: raise e print >> stderr, "you lack permissions to uninstall this package. perhaps run with sudo? exiting." exit(13) # plenty of other exceptions can be thrown, e.g.: installationerror # handle them if you want to. 

это команда, которая работает для меня:pip list | awk '{print $1}' | xargs pip uninstall -y </code></pre>

<p>если вы используете <code>pew</code>, вы можете использовать команду <a href="https://github.com/berdario/pew#wipeenv">wipeenv</a> :</p><p><code>pew wipeenv [env]</code></p>

<blockquote> <p>в<strong> command shell </strong>windows, команда <code>pip freeze | xargs pip uninstall -y</code> не будет работать. так что для тех из вас, кто использует windows, я нашел альтернативный способ сделать это.</p> </blockquote><ol> <li>скопируйте все имена установленных пакетов из<strong> pip </strong>из команды <code>pip freeze</code> в<strong> .txt </strong>файл.</li> <li>затем перейдите в местоположение вашего<strong> .txt </strong>файла и выполните команду <code>pip uninstall -r *textfile.txt*</code></li> </ol>

<p>если вы используете <code>virtualenv</code>:</p><pre><code>virtualenv --clear </path/to/your/virtualenv> </code></pre><p>например, если ваш virtualenv - <code>/users/you/.virtualenvs/projectx</code>, вы должны выполнить: </p><pre><code>virtualenv --clear /users/you/.virtualenvs/projectx </code></pre><p>если вы не знаете, где находится ваш виртуальный env, вы можете запустить <code>which python</code> из активированного виртуального env, чтобы получить путь</p>

<p>в моем случае я случайно установил несколько пакетов по всему миру, используя <code>pip</code>, установленный homebrew, в macos. самый простой способ вернуться к пакетам по умолчанию был простой:</p><pre><code>$ brew reinstall python или, если вы использовали pip3:$ brew reinstall python3 </code></pre>

<p>сначала добавьте весь пакет в <code>requirements.txt</code></p><pre><code>pip freeze > requirements.txt </code></pre><p>затем удалите все</p><pre><code>pip uninstall -y -r requirements.txt </code></pre>