Python 3: ImportError “Nenhum módulo chamado Setuptools” [ubuntu 14.04 LTS]

0

Estou tentando atualizar o mnemosyne ( link ).

Eu tive que instalar o Python3 (uma dependência nomeada; o código do mnemosyne foi movido para o Python3 a partir desta atualização). Eu não tive nenhum problema com atualizações anteriores e acredito que este problema pode estar relacionado ao Python3.

Estou executando o Ubuntu 14.04 LTS e estou reconhecidamente um pouco fora da minha profundidade aqui. Sem dúvida, não há informações suficientes aqui para encontrar uma solução, então, por favor, pergunte e eu atualizarei com novas informações.

Ao executar setup.py com:

sudo python3 setup.py install

Estou enfrentando o seguinte erro.

Traceback (most recent call last):
  File "setup.py", line 2, in <module>
    from setuptools import setup, Command
ImportError: No module named 'setuptools'

Li muito (incluindo link feito em 2013), tentei um monte de sugestões e evitei (sem querer) estragar minha instalação do Ubuntu.

Tentativas de correção incluem:

sudo apt-get install python3-setuptools
python3-setuptools is already the newest version.

sudo apt-get install python3-pip
python3-pip is already the newest version.

sudo pip3 install --upgrade setuptools
The directory '/home/jumblut/.cache/pip/http' or its parent directory is
not owned by the current user and the cache has been disabled. Please
check the permissions and owner of that directory. If executing pip with
sudo, you may want sudo's -H flag.
The directory '/home/jumblut/.cache/pip' or its parent directory is not
owned by the current user and caching wheels has been disabled. check the
permissions and owner of that directory. If executing pip with sudo, you
may want sudo's -H flag.
Requirement already up-to-date: setuptools in /usr/local/lib/python3.4  
/dist-packages

Informação do Python3:

which python3
/usr/local/bin/python3

Obrigado antecipadamente.

EDIT: Info Extra - Permissões

/usr/local/lib/python3.4$ ls -l
total 4
drwxrwsr-x 7 root mygroup 4096 Dec 16 21:55 dist-packages

EDIT2: Info extra - wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python3.5 errors

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python3.5
--2016-12-19 00:36:50--  https://bootstrap.pypa.io/ez_setup.py
Resolving bootstrap.pypa.io (bootstrap.pypa.io)... 151.101.80.175
Connecting to bootstrap.pypa.io (bootstrap.pypa.io)|151.101.80.175|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12746 (12K) [text/x-python]
Saving to: 'STDOUT’

100%[=============================================================================================>] 12,746      --.-K/s   in 0.006s  

2016-12-19 00:36:50 (2.02 MB/s) - written to stdout [12746/12746]

Traceback (most recent call last):
  File "<stdin>", line 436, in <module>
  File "<stdin>", line 432, in main
  File "<stdin>", line 347, in download_setuptools
  File "<stdin>", line 368, in _resolve_version
  File "/usr/local/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/local/lib/python3.5/urllib/request.py", line 466, in open
    response = self._open(req, data)
  File "/usr/local/lib/python3.5/urllib/request.py", line 489, in _open
    'unknown_open', req)
  File "/usr/local/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python3.5/urllib/request.py", line 1324, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: https>

EDIT3: Info extra - sudo python3.5 ez_setup.py errors

sudo python3.5 ez_setup.py
[sudo] password for jumblut: 
Traceback (most recent call last):
  File "ez_setup.py", line 436, in <module>
    sys.exit(main())
  File "ez_setup.py", line 432, in main
    archive = download_setuptools(**_download_args(options))
  File "ez_setup.py", line 347, in download_setuptools
    version = _resolve_version(version)
  File "ez_setup.py", line 368, in _resolve_version
    resp = urlopen(meta_url)
  File "/usr/local/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/local/lib/python3.5/urllib/request.py", line 466, in open
    response = self._open(req, data)
  File "/usr/local/lib/python3.5/urllib/request.py", line 489, in _open
    'unknown_open', req)
  File "/usr/local/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python3.5/urllib/request.py", line 1324, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: https>
    
por jumblie 16.12.2016 / 13:26

1 resposta

1

Aviso de isenção de responsabilidade : após várias tentativas e erros, resolvi esse problema. Porque eu tentei muitas coisas diferentes, este é o meu melhor palpite para qual foi a correção real.

É importante notar que instalei o Python3 compilando o código fonte em vez de instalar a partir do repositório (apt-get) . Eu tive que fazer isso, pois o Python v3.5 não está disponível no repos para o Ubuntu 14.04 LTS.

Eu dividi a resposta em duas partes; Coisas que é bom saber que fornecem muitas informações de fundo que muitas vezes podem ser consideradas conhecimento (como um novato foram lições que aprendi ao longo do caminho) e a verdadeira solução .

Coisas que é bom saber

  • Existem duas versões principais do Python e estas podem viver felizes uma com a outra lado a lado: Python 2.xe Python 3.x. Normalmente, o Python 2.x é executado com python , enquanto o Python3.x geralmente é executado com python3 . Você pode verificar a versão específica de cada um com python -V e python3 -V . Certifique-se de usar a versão que você acha que está usando.
  • Você pode verificar qual versão será instalada a partir dos repositórios antes da instalação usando apt-cache policy <package name> . Essa é uma ótima maneira de evitar a confusão de ter várias versões do mesmo pacote instalado, especialmente o Python. Também é fundamental descobrir se você pode instalar por meio dos repositórios ou se precisa rastrear o código-fonte da versão que procura.
Sidenote: A tentativa de limpar várias versões do Python removendo / desinstalando versões não desejadas é perigosa e você pode potencialmente bloquear o sistema se não souber o que está fazendo, já que o Python é um componente principal do sistema operacional. .

  • Ao compilar a partir do código-fonte, cabe a VOCÊ garantir que você tenha todas as dependências necessárias, dependendo de suas necessidades (os benefícios de usar o apt-get é que isso geralmente é classificado para você). NB: Se você instalar uma dependência após você compilar, você terá que recompilar antes de poder usá-la.

A solução

Instale o seguinte antes de compilar o código fonte do Python:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils

Faça o download e compile o código-fonte da sua versão Python de escolha em python.org . Instruções de compilação são normalmente encontradas no readme .

Verifique sua versão do Python com

python -V e python3 -V para Python 2.xe Python 3.x respectivamente.

Instale o pip (uma ferramenta para instalar e gerenciar pacotes do Python);

wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3

Verifique se o pip corresponde à sua versão do Python;

pip3 --version

Instale setuptools com

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python3

    
por jumblie 23.12.2016 / 05:18