Para os arquivos, depois de muita tentativa e erro, foi isso que eu encontrei (em retrospecto, alguns bits fazem sentido, outros são bastante confusos).
-
Se você
sudo apt-get install python-xyz
, o pacote irá aparecer empip list
. Claro que você pode importá-lo em python, mas não aparece em pip.get_installed_distributions (). (Obviamente o oposto é não verdadeiro. Ou seja, se você usarpip install xyz
ele não aparecerá no seu apt / synaptic) -
Depois de
sudo apt-get install python-xyz
, se você fizerpip install xyz
, o que acontece depende da versão do pip que você tem.
OLD v1.5.6 (a versão atual enviada no Ubuntu PPA):
-
Esta versão do pip (1.5.6) apenas instalará uma nova cópia do xyz em um local diferente. Você acaba com várias cópias e isso causa uma enorme bagunça. por exemplo:
- numpy do apt-get é 1.8.2 em /usr/local/lib/python2.7/dist-packages
- numpy do pip é 1.10.4 em ~ / .local / lib / python2.7 / site-packages
-
Se eu fizer
pip install numpy
novamente, ele será baixado e instalado novamente. Então você pode acabar com muitas versões diferentes que você não pode realmente acessar. Eu posso fazerpip install numpy
5x vezes, e então eu posso fazerpip uninstall numpy 5x
vezes! Obviamente, você pode prestar atenção para não fazer isso, mas às vezes os scripts de instalação de outros softwares são um pouco descuidados e podem atrapalhar as coisas. Inacreditável que o Ubuntu envie oficialmente esta versão do pip.
NOVA v8.0.2 (a versão atual no próprio pip):
-
versões mais recentes do pip (por exemplo, 8.0.2, que está no pip) se recusarão a instalar o mesmo pacote dizendo que o requisito já foi atendido. Então você não pode instalar uma nova versão. Esse é um bom comportamento (mais sobre como obter essa versão do pip mais tarde).
-
Nesse caso, você só pode atualizar, ou seja, instalar com o sinalizador -U.
-
No entanto, quando você tenta
pip install -U xyz
em um pacote instalado com o sudo apt-get, você receberá um erro de permissões porque o apt-get foi instalado em / usr / e você precisa de acesso root para gravar lá. -
Portanto, o AFAIK não tem escolha a não ser
sudo pip install -U xyz
para poder atualizá-lo. Neste caso, o pip instala o pacote mais recente no mesmo local que o sudo apt-get o escreveu. por exemplo. no meu caso /usr/local/lib/python2.7/dist-packages. Isso é bom. -
Também vale a pena ressaltar que os pacotes no apt são frequentemente bem mais antigos que os do pip (por exemplo: numpy v1.8.2 vs 1.10.4, scipy 0.14.1 vs 0.17.0, ipython 2.3 vs 4.0.3 , spyder 2.3.5 vs 2.3.8)
Então, meu pensamento atual é conseguir as grandes coisas com sudo apt-get
, por exemplo
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy pytho
n-nose spyder
e depois atualizá-los (ou pelo menos alguns deles) com sudo pip install -U
.
NB Parece muito importante obter o novo pip do pip (muito meta)
sudo apt-get install python-pip
sudo pip install -U pip
P.S. Estou ciente do virtualenv, mas não tenho necessidade disso agora. Eu preciso apenas de um ambiente de desenvolvimento.
E aqui está um pequeno script para descarregar uma lista de pacotes, versão e caminho (mas só funciona em módulos instalados pip, não aqueles do apt-get)
import pip
pp = pip.get_installed_distributions()
for p in sorted([p.location+"\t"+p.project_name+" ("+p.version+")" for p in pp]):
print p