Atualize o matplotlib para 1.2 ou 1.3

4

Estou tentando atualizar meu matplotlib de python, mas por algum motivo não consigo atualizá-lo.

Eu originalmente instalei o matplotlib com: %código% que estava bem. No entanto, o padrão foi a versão 1.1

Eu então baixei a fonte 1.2 do site e extraí o tar.gz e executei:

sudo python setup.py build
sudo python setup.py install

Depois de tudo isso eu entrei em python2.7 ocioso e digitado:

import matplotlib
print matplotlib.__version__
>>>1.1.1

Então parece que não está atualizando. Como posso atualizar o matplotlib para o 1.2 ou superior?

    
por Nick 10.02.2013 / 20:13

1 resposta

8

Este é provavelmente um problema com sua variável de ambiente PYTHONPATH ou com a falta de um. Usando apt-get , o matplotlib será instalado no prefixo do diretório /usr . Então você encontrará todo o pacote instalado em algum lugar como /usr/lib/python2.7/site-packages/matplotlib .

Você pode confirmar isso com um comando como: dpkg -L python-matplotlib .

Quando você fez o download separadamente da fonte matplotlib, construiu e instalou você mesmo usando os comandos acima, você terá que instalá-lo no prefixo /usr/local . Isso é bom, já que as bibliotecas do sistema (em /usr prefix) são gerenciadas por dpkg e você não deseja sobrescrever ou interferir nesses arquivos, por medo de violar outro, dependendo do pacote ou deixando os arquivos não gerenciados mentindo por aí.

Agora, você provavelmente está usando o python instalado pelo sistema. Ele vem pré-instalado em todas as distribuições Linux, então por que você não? Mas isso é instalado em /usr . O caminho de pesquisa do módulo padrão do Python é construído a partir do prefixo no qual ele está instalado. Portanto, seu sistema python (configurado com --prefix=/usr ), por padrão, procurará apenas por módulos instalados em /usr/lib/python2.7 , ignorando completamente os módulos que você instalou manualmente em /usr/local/lib/python2.7 .

Então, para contornar isso, aqui estão algumas soluções possíveis: -

  1. (Não faça isso!) Crie e instale o matplotlib com --prefix=/usr .

  2. Edite seu PYTHONPATH para incluir /usr/local/lib/python2.7/site-packages  Esta é uma solução viável quando é sua própria máquina. Você instala pacotes lá como usuário root e edita ~/.bashrc ou /etc/bash.bashrc para exportar a variável de ambiente PYTHONPATH. É um pouco confuso para uma máquina ou servidor multiusuário, já que todos esses pacotes precisam ser atualizados manualmente pelo usuário root, o que pode nem sempre ser conveniente. É muito melhor deixar isso para o seu gerenciador de pacotes do sistema.

  3. Use easy_install para instalar o matplotlib (ou qualquer biblioteca em PyPi ) em algum lugar onde o Python o encontre. Neste caso, ele provavelmente se queixaria de que você já o instalou (portanto, você deve desinstalá-lo primeiro, com apt-get ).

    easy_install -m matplotlib
    

    O PyPi geralmente é atualizado com as versões mais recentes do pacote Python. Você saberá por que, se você tiver que carregar um pacote lá (peça de p * ss), então este é um método confiável de obter pacotes python atualizados. Você precisará do pacote distribute instalado - instale-o com apt-get .

  4. Instale o matplotlib 1.2 no seu diretório de usuários. Mais tarde, você poderá removê-lo quando os repositórios forem atualizados para a versão desejada.

    python setup.py install --user

O último método é o meu método favorito. Descobri isso há relativamente pouco tempo, mas não é necessário editar nenhum sistema ou arquivos de configuração ou variáveis de ambiente específicos do usuário, não interfere nos pacotes do sistema e não precisa de um usuário sudo para instalar.

Isso instalará o matplotlib em ~/.local/lib/python2.7 no Linux; em ~/Library/... no OS X e provavelmente em algum outro lugar em outras distros. De qualquer forma, esse método é suportado em todas as plataformas e seus módulos específicos do usuário serão carregados de preferência em relação aos do sistema.

Agora vá se divertir com o matplotlib. É um ótimo pacote!

P.S. Não construa pacotes como usuário root. Eu acho que é uma prática ruim deixar arquivos de propriedade raiz em diretórios de usuários.

P.P.S. Você pode verificar onde o matplotlib (ou qualquer outro módulo python) foi carregado a partir do interpretador Python. por exemplo: -

>>> import matplotlib
>>> print matplotlib.__file__
/usr/lib/python2.7/site-packages/matplotlib/__init__.pyc
    
por 10.02.2013 / 20:40

Tags