Dando acesso à distribuição python instalada pelo usuário para outro usuário linux

0

(Eu não tenho certeza exatamente qual o site SE a minha pergunta pertence, eu hesitei entre stackoverflow, serverfault e superuser. Sinta-se livre para dar sugestões sobre isso nos comentários.)

Aqui está o meu problema:

Eu tenho dois usuários no meu computador Linux, bli e pquarato . bli instalou python3.6 localmente (compilando da origem com ./configure --prefix=${HOME} ). O binário está instalado em /home/bli/bin , pip3.6 instala coisas em /home/bli/.local/lib/python3.6/site-packages . Por exemplo, o numpy está instalado lá:

(bli) $ pip3.6 install numpy
Requirement already satisfied: numpy in /home/bli/.local/lib/python3.6/site-packages

Eu quero que pquarato consiga usar a instalação python de bli . bli fez chmod -R a+rx em /home/bli/bin e /home/bli/.local .

pquarato pode usar o binário python3.6 de bli , mas não é capaz de importar módulos instalados com pip3.6:

(pquarato) $ /home/bli/bin/python3.6 -c 'import numpy'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'

O acima funciona sem erros para bli .

O que mais devo fazer?

Observação: na verdade, tive um problema ao tentar obter pquarato para usar programas como o ipython3:

(pquarato) $ /home/bli/.local/bin/ipython3 
Traceback (most recent call last):
  File "/home/bli/.local/bin/ipython3", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3017, in <module>
    @_call_aside
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3003, in _call_aside
    f(*args, **kwargs)
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3030, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 659, in _build_master
    ws.require(__requires__)
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 967, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/bli/lib/python3.6/site-packages/pkg_resources/__init__.py", line 853, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'ipython==6.2.1' distribution was not found and is required by the application

Espero que a mesma solução resolva os problemas ModuleNotFoundError e DistributionNotFound acima.

    
por bli 04.04.2018 / 13:57

1 resposta

0

Adicionei o seguinte a /home/pquarato/.bashrc :

export PYTHONPATH="/home/bli/.local/lib/python3.6/site-packages"

Isso parece resolver os dois problemas ( ModuleNotFoundError e DistributionNotFound ).

O arquivo .bashrc precisa ser originado antes que isso tenha efeito.

Isso provavelmente precisa ser adaptado dependendo do shell que o usuário usa.

Editar

A configuração PYTHONPATH parece não funcionar com pacotes locais que foram instalados como *.egg-link usando pip3.6 install -e . Nesses casos, ainda há ModuleNotFoundError .

    
por 04.04.2018 / 14:22