I'estou tentando instalar a versão 1.2.2 do adaptador MySQL_python, utilizando um novo virtualenv criado com a opção `--no-site-packages'. A versão atual mostrada no PyPi é 1.2.3. Existe uma maneira de instalar a versão mais antiga? Eu encontrei um artigo afirmando que isso deve ser feito:
pip install MySQL_python==1.2.2
Quando instalado, porém, ele ainda mostra MySQL_python-1.2.3-py2.6.egg-info
nos pacotes do site. Este é um problema específico deste pacote, ou estou fazendo algo errado?
Primeiro, eu vejo dois problemas com o que você'está a tentar fazer. Como você já tem uma versão instalada, você deve desinstalar o driver existente ou usar ``pip install -I MySQL_python==1.2.2````.
No entanto, você'em breve descobrirá que isto não't funciona. Se você olhar para o log de instalação do pip's, ou se você fizer uma pip install -Iv MySQL_python===1.2.2
você'descobrirá que o link URL PyPI não funciona para o MySQL_python v1.2.2. Você pode verificar isso aqui: http://pypi.python.org/pypi/MySQL-python/1.2.2
O link de download 404s e o link de retorno da URL estão redirecionando infinitamente devido à recente atualização do sourceforge.net's e da URL obsoleta do PyPI's.
Para instalar corretamente o driver, você pode seguir estes passos:
pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
Você pode até utilizar um intervalo de versões com o comando `pip install'. Algo parecido com isto:
pip install 'stevedore>=1.3.0,<1.4.0'
E se o pacote já estiver instalado e você quiser baixá-lo, adicione `--force-reinstall' assim:
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
Uma maneira como sugerido em [este post][1] é mencionar a versão em pip
como
pip install -Iv MySQL_python==1.2.2
i.e.
Utilize ==
e mencione o número da versão para instalar apenas essa versão.
-I, --ignore-instalado
ignora os pacotes já instalados.
[1]: https://stackoverflow.com/questions/13916820/how-to-install-a-specific-version-of-a-package-with-pip
Para instalar uma versão específica do pacote python, seja ela a primeira vez, uma atualização ou um downgrade:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_python versão 1.2.2 não está disponível, então eu usei uma versão diferente. Para ver todas as versões de pacotes disponíveis a partir de um índice, exclua a versão:
pip install MySQL_python==
Às vezes, a versão previamente instalada é colocada em cache.
~$ pip install pillow==5.2.0
Ele devolve os seguintes: Requisito já satisfeito: travesseiro===5.2.0 em /home/ubuntu/anaconda3/lib/python3.6/site-packages (5.2.0)
Nós podemos usar --no-cache-dir junto com -I para sobrescrever isto
~$ pip install --no-cache-dir -I pillow==5.2.0
Como esta parecia ser uma alteração de ruptura introduzida na versão 10 do pip, eu baixei para uma versão compatível:
pip install 'pip<10'
Este comando diz ao pip para instalar uma versão do módulo inferior à versão 10. Faça isso em um [virutalenv][1] para que você não'não estrague a instalação do Python no seu site.
Recentemente me deparei com um problema ao utilizar a bandeira pip
's -I
que eu queria documentar em algum lugar:
O -I
não* irá desinstalar o pacote existente antes de prosseguir;
ele irá apenas instalá-lo em cima do antigo.
Isto significa que qualquer arquivo que deva ser excluído entre versões será deixado no lugar.
Isso pode causar comportamento estranho se esses arquivos compartilharem nomes com outros módulos instalados.
Por exemplo, deixe's dizer lá's um pacote chamado package
.
Em um dos arquivos do package', eles utilizam
importar data/hora'.
Agora, em [email protected]', isso aponta para o módulo
datetimeda biblioteca padrão, mas em
[email protected]', eles adicionaram um datetime.py
local como um substituto para a versão padrão da biblioteca (por qualquer razão).
Agora vamos dizer que eu executei pip install package===3.0.0
, mas depois percebi que eu realmente queria a versão 2.0.0
.
Se eu agora rodar pip install -I package===2.0.0
, o antigo arquivo datetime.py
não será removido, então qualquer chamada para import datetime
irá importar o módulo errado.
No meu caso, isso se manifestou com estranhos erros de sintaxe porque a nova versão do pacote adicionou um arquivo que só era compatível com o Python 3, e quando eu baixei a versão do pacote para suportar o Python 2, eu continuei importando o módulo somente Python-3.
Baseado nisso, eu argumentaria que a desinstalação do pacote antigo é sempre preferível ao uso do -I
quando atualizando versões de pacotes instalados.
Este comando abaixo funcionou para mim.
Versão Python - 2.7
pacote - python-jenkins
comando - $ pip install 'python-jenkins>=1.1.1'
Há 2 maneiras de instalar qualquer pacote com a versão:- A). pip install -Iv package-name == version B). pip install -v package-name == versão
**Para A***
Aqui, se você're usa a opção -I enquanto instala(quando você não't sabe se o pacote já está instalado) (como 'pip install -Iv pyreadline == 2.* 'ou algo assim), você estaria instalando um novo pacote separado com o mesmo pacote existente tendo alguma versão diferente.
**Para B***
2.e depois ver o que's já instalados por **lista de códigos***
3.se a lista de pacotes contém algum pacote que você deseja instalar com uma versão específica, então a melhor opção é desinstalar o pacote desta versão primeiro, por **pip uninstall package-name***
4.E agora você pode ir em frente para reinstalar o mesmo pacote com uma versão específica, por **pip install -v package-name==versão** por exemplo pip install -v pyreadline == 2.
Se você quiser atualizar para a última versão e não sabe qual é a última versão que você pode digitar.
pip install MySQL_python - atualização
Isto irá atualizar o MySQL_python para a última versão disponível, você pode usar para qualquer outra versão de pacote.