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 xyzele 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 numpynovamente, 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 numpy5x vezes, e então eu posso fazerpip uninstall numpy 5xvezes! 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 xyzem 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 xyzpara 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