Maneira recomendada de instalar pacotes python no Arch

37

Qual é a maneira recomendada de instalar pacotes python no Arch? Procurando por eles no AUR e instalando-os a partir daí (ou crie um PKGBUILDarquivo para criar um pacote você mesmo) ou usando pip?

Comecei instalando coisas do pacman e do AUR e não sei se seria prudente misturar com pippacotes.

Nils Werner
fonte

Respostas:

34

Se você não precisar dos pacotes python para todos os usuários, poderá instalá-los em sua casa assim:

pip install --user packagename

A instalação em sua casa não entrará em conflito com o gerenciador de pacotes.

Por padrão, pip install --userserá instalado no diretório "site do usuário". Normalmente, isso é algo como: /home/lesmana/.local/lib/python3.6/site-packages.

O comando a seguir imprimirá, entre outros, o local do "site do usuário":

python -m site

Para personalizar o local da instalação:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

isso instalará tudo sob $HOME/some/dir

para correr:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

Consulte o manual do pip para obter mais informações.


se você deseja o pacote python para todos os usuários, o melhor local para instalá-lo é /opt. por exemplo, assim:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(observe a falta --user)

e para executar, como acima:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Explicação em segundo plano: /opté geralmente reconhecido pelas distribuições gnu / linux como o diretório em que o usuário local ou o administrador do sistema pode instalar seus próprios itens. em outras palavras: o gerenciador de pacotes das distribuições geralmente não toca /opt. isso é mais ou menos padronizado no padrão de hierarquia do sistema de arquivos

Para maior conforto dos usuários, você ainda precisará escrever um script de wrapper e colocá-lo em /binou /usr/bin. Isso ainda corre o risco de colidir com o gerenciador de pacotes de distribuição, mas pelo menos é apenas um arquivo de script do wrapper. Portanto, o dano que pode ser causado é mínimo. Você pode nomear o script do wrapper como algo semelhante local-fooou custom-foopara minimizar ainda mais o risco de colisão com o gerenciador de pacotes de distribuição.

Como alternativa, você pode modificar PATHpara incluir /opt/bine colocar seu script de wrapper lá. Mas isso novamente exige que você modifique um (ou alguns) arquivos do sistema onde PATHé definido, que novamente pode ser substituído pelo gerenciador de pacotes de distribuição.

Em resumo: se você deseja instalar para todos os usuários, faça-o no /opt. Onde você coloca o script do wrapper para maior conforto é uma chamada de julgamento.

Mais informações sobre /opte Standard Hierarchy System:

lesmana
fonte
IMHO, isso, juntamente com um ponteiro para a criação de virtualvvs, deve ser a resposta aceita.
Ttsiodras
1
Ugh. Mais novo pythone gostaria de saber isso antes de fazer sudiopip-ping. Obrigado por isso.
quer
E se você faz precisa dos pacotes python para todos os usuários?
Mehrdad 7/10
@Mehrdad
@lesmana: Obrigado! Mas você tem certeza de que é a maneira recomendada de fazer isso? Esta é a primeira vez que ouvi alguém sugerir o uso de / opt para Python ...
Mehrdad 7/10
9

Normalmente, em uma distribuição, é recomendável usar o gerenciador de pacotes da distribuição. Obviamente, você pode instalar coisas usando pip (ou, no mundo perl, cpan) ou compilar e instalar você mesmo. No entanto, quando você faz isso, o gerenciador de pacotes da distribuição não os conhece e não pode gerenciar dependências ou atualizações para eles.

Usar pip é praticamente equivalente a compilar e instalar seu próprio pacote. Faça isso se precisar, mas prefira o gerenciador de pacotes da distribuição.

Falcon Momot
fonte
2
Você deve absolutamente evitar o uso de pip(pelo menos globalmente via sudoou como root) - Eu só tenho algum site-package/...já existe erros quando pacmantentou instalar algumas dependências
Tobias KIENZLER
Eu também tenho esses erros. Eu havia atualizado todos os pacotes do pip3 e, em seguida, o pacman se recusou a fazer a atualização do sistema devido a conflitos. Eu tive que desinstalar esse pacote através do pip3 e pacman, fazer a atualização do sistema e finalmente instalar o pacote novamente (usando pacman, é claro).
Al.G.
8

O caminho certo para o ArchLinux

A maneira correta de instalar pacotes PYTHON no ArchLinux é usando o PACMAN! Para instalar pacotes no Python3, você precisa usar

sudo pacman -S python-'package'

Se você quiser instalar pacotes do Python2, precisará usar

sudo pacman -S python2-'package'

A maioria dos pacotes python estão nos repositórios do ArchLinux e os pacotes que não estão no AUR (ArchLinux User Repositories) - para esses pacotes, é necessário fazer o download do arquivo PKGBUILD e compilar. Depois disso, você deve usar o PACMAN para concluir a instalação

makepkg -s
sudo pacman -U 'compiled-package'

O segundo caminho certo para o ArchLinux

Quando o pacote não está no AUR ou o PKGBUILD não está funcionando, você pode usar o PIP para instalá-lo no Python3

sudo pip install 'python-package'

ou Python2

sudo pip2 install 'python-package'

Você poderia dar uma chance virtualenvou atéconda

No Arch, você também pode usar os VirtualEnvironments. Isso pode trazer portabilidade para o seu código e manter pacotes antigos também. Instale-o com

sudo pacman -S python-virtualenv

e tente isso

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

Ao criar esse ambiente yourenv, você configurará pippara instalar pacotes somente nesse ambiente, não em todo o sistema.

Esses outros links podem ser úteis para você aprender mais sobre o gerenciamento de pacotes no Linux com condaou virtualenv:

Instalando pacotes Python a partir de um notebook Jupyter

Código Python no ArchLinux

Se você seguir estas regras, o ArchLinux não quebrará e não terá problemas de dependência entre o PACMAN e o PIP.

Espero que seja útil!

Emanuel Fontelles
fonte
5

Para certos pacotes (aqueles que eu provavelmente não quero invadir), eu faço meu próprio pacote usando isto:

https://github.com/bluepeppers/pip2arch

em seguida, crie e instale o PKGBUILD produzido.

Deixo virtualenvs para pacotes que talvez queira modificar ou invadir.

rmorgans
fonte
Também existe o github.com/wenLiangcan/pip2pkgbuild
Tobias Kienzler 14/02
1

Além das outras respostas aqui, confira o python-virtualenvpacote. Pode ser muito útil se você estiver desenvolvendo vários projetos com diferentes dependências e com números de versão incompatíveis.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

Lembre-se também de que existem duas variantes de pip e virtualenv. Um para o Python 2 e outro para o Python 3. Se a instalação falhar com um erro de sintaxe, você pode estar tentando com a versão errada.

bobbaluba
fonte