Estou tentando desinstalar todos os pacotes django em meu ambiente de superusuário para garantir que todas as minhas dependências de webapp sejam instaladas em meu virtualenv.
sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall
Mas pip quer confirmar a desinstalação de cada pacote e não parece haver uma -y
opção para pip. Existe uma maneira melhor de desinstalar um lote de módulos Python? É rm -rf .../site-packages/
uma maneira adequada de ir? Existe uma alternativa easy_install?
Alternativamente, seria melhor forçar o pip a instalar todas as dependências do virtualenv em vez de depender dos módulos python do sistema para atender a essas dependências, por exemplo pip --upgrade install
, mas forçar até mesmo versões igualmente antigas a serem instaladas para substituir quaisquer módulos do sistema. Tentei ativar meu virtualenv e então pip install --upgrade -r requirements.txt
parece instalar as dependências, mesmo aquelas existentes no caminho do meu sistema, mas não posso ter certeza se isso é porque meus módulos do sistema eram antigos. E man pip
não parece garantir este comportamento (ou seja, instalar a mesma versão de um pacote que já existe nos pacotes do site do sistema).
yes
é tão útil.yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall
porque oyes
es seria engolido pelopip freeze
não oxargs
argumento / comandopip uninstall
,.pip freeze > all_to_uninstall.txt
yes | pip uninstall -r all_to_uninstall.txt
Se você deseja desinstalar todos os pacotes de
requirements.txt
,fonte
Sim. Não mexa muito com os pacotes instalados do sistema embutido. Muitos dos pacotes do sistema, particularmente no OS X (mesmo o debian e as variedades derivadas) dependem muito deles.
Não deve ser um grande problema se houver mais alguns pacotes instalados no venv que já estão lá no pacote do sistema, particularmente se forem de versões diferentes. Esse é o objetivo do virtualenv.
Não, ele não instala os pacotes já presentes na instalação principal, a menos que você tenha usado o
--no-site-packages
sinalizador para criá-lo, ou as versões necessárias e atuais são diferentes.fonte
Lakshman Prasad estava certo,
pip --upgrade
e / ouvirtualenv --no-site-packages
é o caminho a percorrer. Desinstalar os módulos Python de todo o sistema é ruim.A
--upgrade
opção de pip instalar os módulos necessários no ambiente virtual, mesmo se eles já existirem no ambiente do sistema, e mesmo se a versão necessária ou a versão mais recente disponível for igual à versão do sistema.E, usar a opção --no-site-packages ao criar o ambiente virtual garante que dependências ausentes não possam ser mascaradas pela presença de módulos ausentes no caminho do sistema. Isso ajuda a expor problemas durante a migração de um módulo de um pacote para outro, por exemplo, pinax.apps.groups -> django-groups, especialmente quando o problema é carregar instruções templatetags no django que procura em todos os módulos disponíveis os diretórios templatetags e as definições de tag dentro.
fonte
pode ignorar a confirmação
fonte