Resolvendo erros devido a programas duplicados [duplicados]

1

Alguns antecedentes:

A questão não tem a ver com a instalação do django ou python A questão tinha a ver com duas duas instalações do python3.5.2 em dois diretórios diferentes, causando um comportamento conflitante

Eu instalei o python3.5.2 do meu diretório home de um tar. (Lembro-me de usar um comando atlinstall)

Então, eu instalei o django usando o pip3, fazendo

sudo -H pip3 install django , a instalação foi bem-sucedida.

Eu também instalei numpy, scipy, alguns outros módulos.

Todos esses módulos estão acessíveis quando estou usando python3.5 como o comando da linha de comando, mas não estou conseguindo importar esses módulos quando eu chamo python3 .

E, todos os softwares de terceiros também estão usando este python3 , como resultado, não estou conseguindo usar nenhuma GUI para importar qualquer um dos módulos mencionados.

A minha pergunta é, como posso fazer com que o outro python3 aponte para a mesma coisa que python3.5 , que tem todos os módulos instalados.

salman@Skynet ~]$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'django'
>>> exit()
[salman@Skynet ~]$ python3.5
Python 3.5.2 (default, Nov 30 2016, 11:30:08)   
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 

Funciona quando python3.5 é usado.

Editar: saídas solicitadas

  • which python3 python3.5

    /usr/bin/python3
    /usr/local/bin/python3.5
    
  • env | grep -i python; for p in $(ls /usr{,/local}/bin/python3*); do echo -- $(ls -l $p); $p -c "import sys; print(sys.path)"; done

    -- lrwxrwxrwx 1 root root 9 Mar 23 2016 /usr/bin/python3 -> python3.5
        ['', '/usr/lib/python35.zip', '/usr/lib/python3.5',  '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-  dynload', '/usr/local/lib/python3.5/dist-packages',  '/usr/lib/python3/dist-packages']
       -- -rwxr-xr-x 2 root root 4460336 Nov 18 01:23 /usr/bin/python3.5
        ['', '/usr/lib/python35.zip', '/usr/lib/python3.5',  '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages',   '/usr/lib/python3/dist-packages']
         -- -rwxr-xr-x 2 root root 4460336 Nov 18 01:23 /usr/bin/python3.5m
     ['', '/usr/lib/python35.zip', '/usr/lib/python3.5',  '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages',   '/usr/lib/python3/dist-packages']
    -- lrwxrwxrwx 1 root root 10 Mar 23 2016 /usr/bin/python3m ->  python3.5m
    ['', '/usr/lib/python35.zip', '/usr/lib/python3.5',  '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages',  '/usr/lib/python3/dist-packages']
    -- -rwxr-xr-x 2 root root 12170760 Nov 30 11:30   /usr/local/bin/python3.5
    ['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5',  '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/site-packages']
     -- -rwxr-xr-x 2 root root 12170760 Nov 30 11:30  /usr/local/bin/python3.5m
     ['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5',  '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/site-packages']
          -- -rwxr-xr-x 1 root root 3080 Nov 30 11:31  /usr/local/bin/python3.5m-config
     Usage: /usr/local/bin/python3.5m-config --prefix|--exec-prefix|--  includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--    configdir
    

Minha última pergunta seria

como posso excluir o python3.5 do / usr / local / bin sem prejudicar o python3 em / usr / bin

Obrigado a todos por lerem a pergunta e responderem.

    
por Salman Estyak 30.11.2016 / 08:06

1 resposta

1

Uma solução - embora deva ser considerada com cuidado - é ter python3 pontos para o python3.5 que funciona corretamente:

sudo mv /usr/bin/python3 /usr/bin/python3_backup
sudo ln -s /usr/local/bin/python3.5 /usr/bin/python3 

Atualização: outro método

Minha primeira resposta foi no caso de você ter certeza que precisava do python3.5 em / usr / local / bin. Se não for esse o caso e você quiser manter o sytem python 3 enquanto adiciona módulos do seu / usr / local python3.5, você pode simplesmente atualizar sua variável PYTHON_PATH da seguinte maneira em seu bashrc (como de acordo com as saídas que você forneceu) :

export PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python3.5:/usr/local/lib/python3.5/plat-linux:/usr/local/lib/python3.5/site-packages

    
por michael 30.11.2016 / 10:47