Pip: O objeto _NamespacePath não tem classificação de atributo

Criado em 5 jan. 2017  ·  99Comentários  ·  Fonte: pypa/pip

  • Versão Pip: 9.0.1
  • Versão Python: 3.6
  • Sistema operacional: macOS

Parece que o pip, por meio do fornecedor de Setuptools, está acionando o problema relatado em pypa / setuptools # 885 (e pode provavelmente estar implicado nos relatórios contínuos de usuários que estão enfrentando o problema). Aqui está um traceback que ocorre quando pip freeze é invocado por tox durante uma execução de teste após a conclusão da etapa develop-inst-no-deps .

Traceback (most recent call last):
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/bin/pip", line 7, in <module>
    from pip import main
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="13">@_call_aside</strong>
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'

Imagino que a única correção seja revender ferramentas de instalação com 31.0.1 ou posterior.

crash setuptools vendored dependency auto-locked

Comentários muito úteis

Eu tentei esses truques e até agora nada funcionou, então aqui está minha solução difícil e útil:
em /path/to/usr/local/python3.5/dist-packages/ , para o arquivo pip/_vendor/pkg_resources/__init__.py , linha 2121, altere:

orig_path.sort(key=position_in_sys_path)

com

try:
    orig_path.sort(key=position_in_sys_path)
except AttributeError:
    print("BUG: Is it bad if orig_path is not sorted correctly?")

Todos 99 comentários

Percebi que havia um bug no meu script setup.py. O nome do pacote tinha um 'esqueleto' latente para o nome em vez do nome do projeto apropriado. Depois de corrigir isso, o problema foi embora, provavelmente porque o nome correto do projeto yg.piistore aparece em uma ordem de classificação diferente de skeleton . Ainda assim, suspeito que esse problema existirá para alguns usuários, dependendo da ordem e dos nomes dos pacotes e de suas dependências.

Talvez esse problema seja acionado apenas se o pacote que está sendo instalado não for um pacote de namespace, mas depende de pacotes de namespace.

Recebi o mesmo erro ( '_NamespacePath' object has no attribute 'sort' ). Espero que os seguintes detalhes de minha configuração sejam úteis.

  • Versão Pip: 9.0.1
  • Versão Python: 3.5
  • Versão do Setuptools: 32.3.1
  • SO: Ubuntu 16.04

Três pacotes estão em jogo (embora o primeiro provavelmente não seja importante). Eu tornei anônimos os nomes dos pacotes.

  • acme.foo : isso está em um diretório no meu disco rígido, portanto, todos esses caminhos são válidos:

    • /path/to/acmefoo/ é a raiz do projeto

    • /path/to/acmefoo/acme/foo contém o código-fonte do pacote

    • /path/to/acmefoo/acme/__init__.py contém (apenas) o texto: __import__('pkg_resources').declare_namespace(__name__)

    • /path/to/acmefoo/setup.py inclui packages=["acme", "acme.foo"], namespace_packages=["acme"] (e, claro, usa setuptools , não distutils ).

  • acme.bar : Isto é semelhante, mais seu setup.py contém entrypoints={'console_scripts': ['ac_bar = acme.bar.main:main']} (embora removê-lo não seja necessário para reproduzir).
  • acme.baz : É semelhante, exceto que não tem setup.py .

Eu instalei acme.foo e acme.bar diretamente executando, por exemplo, pip install /path/to/acmefoo/ . Eu então mudo o diretório de trabalho atual para acme.baz , e executando pip freeze ou ac_bar dá o erro.

Alguns pontos extras:

  • Excluir /path/to/acmebaz/acme/__init__.py (ou seja, o pacote que NÃO era pip install ed) impede que o erro ocorra.
  • Passar por todo este procedimento com setuptools==28.0.0 NÃO reproduz o erro.
  • Se eu instalar acme.foo e acme.bar com setuptools==32.3.1 , então faça downgrade para setuptools==28.0.0 e execute pip freeze em /path/to/acmebaz , eu recebo o erro. Portanto, o que é importante é a versão de setuptools usada para a instalação de pip , não a versão que está atualmente ativa.

Se eu instalar, fizer downgrade de ferramentas de instalação e executar pip freeze, recebo o erro.

Este comportamento quase certamente implica as mudanças em Setuptools v31 para pypa / setuptools # 250. Em particular, https://github.com/pypa/setuptools/commit/7e25fd910d1ff5259c0768d3b54a9bf03bce4279 atualizou a maneira nspkg-pth arquivos _NamespacePath são criados.

Mas foi apenas no Setuptools 31.0.1 onde o erro sort foi corrigido em pkg_resources . No entanto, como você pode ver em meu traceback, o erro está ocorrendo na versão vendida de pkg_resources, que ainda não tem essa correção.

O que é interessante e ainda não entendo é por que excluir a declaração do pacote de namespace do acme (para baz) interrompe o erro. Não tenho certeza do que está acontecendo lá, mas provavelmente vale a pena investigar mais.

Versão Python Python 3.6.0b2
Pip versão 9.0.1
Sistema operacional Ubuntu 16.10 (4.9.0-1.1-liquorix-amd64 # 1 ZEN SMP PREEMPT liquorix 4.9-3 (2017-01-07) x86_64 x86_64 x86_64 GNU / Linux)

`` `Traceback (última chamada mais recente):
Arquivo "/usr/lib/python3.6/runpy.py", linha 183, em _run_module_as_main
mod_name, mod_spec, code = _get_module_details (mod_name, _Error)
Arquivo "/usr/lib/python3.6/runpy.py", linha 142, em _get_module_details
return _get_module_details (pkg_main_name, erro)
Arquivo "/usr/lib/python3.6/runpy.py", linha 109, em _get_module_details
__import __ (pkg_name)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/__init__.py", linha 26, em
de pip.utils import get_installed_distributions, get_prog
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py", linha 27, em
from pip._vendor import pkg_resources
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3018, em
@_call_aside
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3004, em _call_aside
f ( args, * kwargs)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3046, em _initialize_master_working_set
dist.activate (substituir = False)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2578, em ativar
declare_namespace (pacote)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2152, em declare_namespace
_handle_ns (packageName, path_item)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2092, em _handle_ns
_rebuild_mod_path (caminho, nome do pacote, módulo)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2121, em _rebuild_mod_path
orig_path.sort (chave = position_in_sys_path)
AttributeError: o objeto '_NamespacePath' não tem o atributo 'sort'
Erro em sys.excepthook:
Traceback (última chamada mais recente):
Arquivo "/usr/lib/python3/dist-packages/apport_python_hook.py", linha 63, em apport_excepthook
de apport.fileutils import provavelmente_packaged, get_recent_crashes
Arquivo "/usr/lib/python3/dist-packages/apport/__init__.py", linha 5, em
from apport.report import Report
Arquivo "/usr/lib/python3/dist-packages/apport/report.py", linha 30, em
import apport.fileutils
Arquivo "/usr/lib/python3/dist-packages/apport/fileutils.py", linha 23, em
de apport.packaging_impl import impl as packaging
Arquivo "/usr/lib/python3/dist-packages/apport/packaging_impl.py", linha 23, em
importar apt
Arquivo "/usr/lib/python3/dist-packages/apt/__init__.py", linha 23, em
importar apt_pkg
ModuleNotFoundError: Nenhum módulo chamado 'apt_pkg'

A exceção original foi:
Traceback (última chamada mais recente):
Arquivo "/usr/lib/python3.6/runpy.py", linha 183, em _run_module_as_main
mod_name, mod_spec, code = _get_module_details (mod_name, _Error)
Arquivo "/usr/lib/python3.6/runpy.py", linha 142, em _get_module_details
return _get_module_details (pkg_main_name, erro)
Arquivo "/usr/lib/python3.6/runpy.py", linha 109, em _get_module_details
__import __ (pkg_name)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/__init__.py", linha 26, em
de pip.utils import get_installed_distributions, get_prog
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py", linha 27, em
from pip._vendor import pkg_resources
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3018, em
@_call_aside
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3004, em _call_aside
f ( args, * kwargs)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 3046, em _initialize_master_working_set
dist.activate (substituir = False)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2578, em ativar
declare_namespace (pacote)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2152, em declare_namespace
_handle_ns (packageName, path_item)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2092, em _handle_ns
_rebuild_mod_path (caminho, nome do pacote, módulo)
Arquivo "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", linha 2121, em _rebuild_mod_path
orig_path.sort (chave = position_in_sys_path)
AttributeError: o objeto '_NamespacePath' não tem o atributo 'sort'
`` `

Eu também estou recebendo este erro. Tentei fazer o downgrade para o setuptools v28, mas não resolveu. Além disso, esse erro não aparece no Python 3.5.2. Mas agora percebi que o pip não tem esse erro no Heroku. Eu tenho um aplicativo Django em execução em Python 3.6 dentro do Heroku e nunca teve problemas

Para mim, a solução foi abandonar os pacotes de namespace; acme/foo agora é acme_foo . Parece haver alguns casos extremos enterrados profundamente na infraestrutura Python (a falta de Cython / suporte do módulo de extensão é outra) e esta foi a gota d'água.

Esse problema está implicado nesses testes com falha . Embora eu tenha suposto acima que o problema pode ser isolado de pacotes não-namespace que requerem pacotes de namespace, este exemplo é de um pacote de namespace ( pmxbot.rss ) exigindo outro pacote de namespace no mesmo namespace ( pmxbot ).

@jaraco encontrei a mesma dúvida e não sei como resolver? E meu pip não funciona para instalar tudo. Ajude-me ! :SOS:

Python 3.5.2
Pip 9.0.1
Ferramentas de instalação 34.2.0

>> pip3
Traceback (most recent call last):
  File "/usr/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="15">@_call_aside</strong>
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_t
    dist.activate(replace=False)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'

Mesmo aqui, meu pip parece quebrado com o mesmo erro. Estou usando uma instalação de usuário do pip:

~ Python tracebackTraceback (última chamada mais recente):Arquivo "/home/stavros/.local/bin/pip", linha 7, em




















Percebi que esse problema se tornará mais prevalente à medida que mais pacotes (especialmente rodas) forem lançados usando versões posteriores do setuptools. Fiz mais análises no problema do upstream, mas não tenho uma correção, exceto para atualizar o pkg_resources no pip.

Obtendo o mesmo erro nas seguintes especificações:

  • Ubuntu 16.10 Desktop
  • apt install python3-pip
Traceback (most recent call last):
  File "/python/v3/Libraries/pip/Upgrade.py", line 4, in <module>
    import pip
  File "/home/eric/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/eric/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="9">@_call_aside</strong>
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'

Código Python usado para atualizar pacotes:

#!/usr/bin/python3
# -*- coding: utf8 -*-

import pip
import subprocess

try:
    for distribution in pip.get_installed_distributions():
        subprocess.call('python3 -m pip install --upgrade ' + distribution.project_name, shell=True)
except OSError:
    print('Permission denied')

Meu pip funciona novamente depois de instalar conda , consulte https://conda.io/docs/install/quick.html e https://doc.scrapy.org/en/latest/intro/install.html# anaconda para tentar.

Estou descobrindo que esse problema está se tornando mais prevalente e se tornando replicável de forma confiável ao executar pip install de um diretório contendo um pacote de namespace quando outros pacotes nesse namespace estão instalados e um desses pacotes tem um -nspkg.pth arquivo de compilação em ferramentas de configuração tardias.

Edit: o problema que me levou a postar isso acabou por ser remediado corrigindo uma falha no pacote que estava sendo testado.

@jaraco me apontou aqui porque meus problemas (# 4309) são muito semelhantes a este.

No entanto, neste caso, estou tentando instalar um pacote de namespace-d (minchin.releaser) que depende de outro pacote de namespace-d no mesmo namespace (minchin.text).

Tenho exatamente o mesmo problema, mas não preciso tentar coisas complicadas, mesmo pedindo a versão do pip3 falha:

$ python3 /usr/local/bin/pip3 --version
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="6">@_call_aside</strong>
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'

Tentei reinstalar com apt-get tanto python3-pip quanto python3-setuptools , mas não mudou nada.

Um comportamento ainda mais estranho é que se eu executar o script pip3 com outro intérprete, por exemplo, ipython3 , ele funciona!

$ ipython3 /usr/local/bin/pip3 -- --version
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

@jaraco A venda de

@pradyunsg no meu caso, vendoring setuptools 34.3.0 corrigiu para mim.

sim. Veja eaccb88.

@jaraco Está no master? Não vejo a entrada de mudança relevante.

Existe uma versão do pip que sabemos ser anterior ao surgimento desse problema? Seria útil ser capaz de aconselhar os usuários "downgrade para pip XYZ até que este problema seja marcado como corrigido"

veja # 4330

sudo apt-get upgrade python-setuptools

alternativamente, tente

sudo dpkg --get-selections | grep -E "^python" | grep install | cut -f1 | xargs apt-get --reinstall -y install

Eu tentei esses truques e até agora nada funcionou, então aqui está minha solução difícil e útil:
em /path/to/usr/local/python3.5/dist-packages/ , para o arquivo pip/_vendor/pkg_resources/__init__.py , linha 2121, altere:

orig_path.sort(key=position_in_sys_path)

com

try:
    orig_path.sort(key=position_in_sys_path)
except AttributeError:
    print("BUG: Is it bad if orig_path is not sorted correctly?")

Pode haver um pip 9.0.2 apenas com esta correção - uma versão mais recente de setuptools vendida?

Uma maneira de fazer isso seria ramificar o 9.0.1, escolher a correção mencionada por @jaraco e marcá-la como 9.0.2, liberar e mesclar novamente no master.

/ cc @dstufft @xavfernandez

@Naereen silenciar o erro pode causar problemas se um bug diferente surgir, é melhor imprimir str(e) também

@LoganDark é claro, minha "correção" não foi feita para ser fundida ou usada, apenas para ter um comando funcional pip enquanto esperava por uma solução mais limpa.

@Naereen Bem, claro. Acabei de rm -rf ~/.local/lib/python3.6/site-packages/* e funcionou.

Claro que pode não ser a solução para todos, porque eles podem ter certos pacotes instalados que não querem remover. Fiz isso porque posso reinstalar facilmente tudo que perdi

Não foi possível fazer nada com pip no meu virtualenv. Até recebi o erro ao digitar pip .

Um easy_install pip no meu virtualenv tornou-o viável novamente, embora o erro ainda aparecesse no final da instalação.

Isso está no mestre?

Não. Estava em um branch chamado hotfix / issue-4216 que foi excluído. Parece que b005a9b atinge o mesmo objetivo.

Existe uma versão do pip que sabemos ser anterior ao surgimento desse problema?

Na verdade. Conforme mencionado acima , o problema surgiu quando o Setuptools 31 introduziu o suporte para setup.py develop em pacotes de namespace, o que exigia a expansão dos arquivos -nspkg.pth. Essa mudança essencialmente significava que as versões mais antigas de pkg_resources não suportavam este novo formato e entupiam.

É concebível que haja uma versão mais antiga do pip que vende uma versão mais antiga do setuptools antes de onde essa chamada de classificação foi feita.

Pode haver um pip 9.0.2 apenas com esta correção - uma versão mais recente de setuptools vendida?

Isso é o que propus com o branch de hotfix, que foi excluído sem comentários. Se fosse meu projeto, eu gostaria de consertar o mais rápido possível.

@palewire Obrigado por chamar a atenção para isso.

Dito isso, você geralmente deseja vincular ao contrário ... Acho que não importa muito.

Desculpe ser um spammer!

Para que possamos planejar nossa resposta, você tem alguma ideia de quando isso será corrigido? Existe alguma maneira de ajudarmos com isso?

Vou tentar cortar um 9.0.2 neste fim de semana.

Não quero ser chato aqui, mas há alguma atualização sobre esse problema? Eu tenho um ambiente de CI usando tox e ele está falhando ao tentar compilar para python3.6. Posso fazer isso funcionar localmente ativando o ambiente python3.6 e executando manualmente easy_install pip . Mas não consegui encontrar uma solução alternativa para o ambiente de CI.

Ainda tem um pip quebrado aqui também e a solução alternativa de Naereen não funciona em todos os cenários (obrigado por tentar). Algum progresso @dstufft ?

SOS: Pessoal, estou com um grande problema, por favor, ajudem! Quando tentei ativar meu virtualenv, recebi os erros de longa linha:

Traceback (most recent call last): File "/anaconda/bin/conda", line 6, in <module> sys.exit(conda.cli.main()) File "/anaconda/lib/python3.6/site-packages/conda/cli/main.py", line 151, in main activate.main() File "/anaconda/lib/python3.6/site-packages/conda/cli/activate.py", line 118, in main from conda.utils import shells File "/anaconda/lib/python3.6/site-packages/conda/utils.py", line 13, in <module> from .gateways.disk.read import compute_md5sum File "/anaconda/lib/python3.6/site-packages/conda/gateways/disk/read.py", line 22, in <module> from ...models.channel import Channel File "/anaconda/lib/python3.6/site-packages/conda/models/channel.py", line 9, in <module> from ..base.context import context File "/anaconda/lib/python3.6/site-packages/conda/base/context.py", line 19, in <module> from .._vendor.auxlib.path import expand File "/anaconda/lib/python3.6/site-packages/conda/_vendor/auxlib/path.py", line 8, in <module> import pkg_resources File "<frozen importlib._bootstrap>", line 961, in _find_and_load File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 646, in _load_unlocked File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2985, in <module> File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2971, in _call_aside File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 3013, in _initialize_master_working_set File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2544, in activate File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2118, in declare_namespace File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2058, in _handle_ns File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2087, in _rebuild_mod_path AttributeError: '_NamespacePath' object has no attribute 'sort'

python 3.6
pip 9.0.1
mac 10.6

@ Mika15 Isso deve ser corrigido na versão pendente do pip 9.0.2

No tíquete associado, você pode testar o código mestre mais recente:

pip install -I https://github.com/pypa/pip/archive/master.zip#egg=pip

_Nota: _ No Ubuntu eu tive que deletar meus pacotes do site do usuário antes de executar o comando acima ( rm -r ~/.local/lib/python3.5/site-packages )

No meu caso, não consegui executar um comando pip . A única solução que finalmente funcionou foi remover o pip dos dist-packages e então:

git clone https://github.com/pypa/pip.git
cd pip
python3.6 setup.py install

Então começou a funcionar

@ cas-- você poderia fornecer uma indicação de pendente? O último lançamento menor 9 levou 4 dias;).

Mesmo erro no Windows, estou tentando usar o Anaconda com PyCharm, erro exato aparece ao criar ambiente virtual. Acho que é semelhante ao problema de @ Mika15 .

@ cas-- alguma atualização na versão 9.0.2?

Eu não sou um desenvolvedor para este projeto. Eu estava explicando a situação para os posts 'eu também'.

Pip atualizado para master pip 10.0.0.dev0 (python 3.6) mas ainda falha (pacote dvc ).
Atualizar setuptools para 35 resolveu.

No Nixpkgs, resolvemos o problema atualizando o pkg_resources vendido para a versão fornecida por setuptools em 36.0.1.

A solução de @ZhukovGreen funcionou para mim. em /usr/local/lib/python3.5/dist-packages, eu fiz

sudo rm -r  pip 
sudo rm -r pip-9.0.1.dist-info

Fiz um patch para o pip 9.0.1, atualizando o setuptools vendido, que resolveria esse problema. Se alguém quiser obter um pip corrigido, você pode obtê-lo em https://github.com/pradyunsg/pip/tree/hotfix/9.0.2.

pip install --ignore-installed --pre "https://github.com/pradyunsg/pip/archive/hotfix/9.0.2.zip#egg=pip"

PS: Não sou um desenvolvedor central de pip, apenas alguém que tem tempo livre para fazer esse patch.

Recebi o mesmo erro em 2 computadores de 3, mas apenas ao atualizar pacotes do pycharm 2017.1.4. A partir da linha de comando, o pip funciona sem problemas. Eu uso:

Windows 7.1 / 8.1 64 bits
Python 3.6.1 64 bits
pip 9.0.1
ferramentas de configuração 36.0.1

Alguma ideia?

Veja: https://youtrack.jetbrains.com/issue/PY-24682

Ei pessoal,
Estou trabalhando para minha tese de bacharelado com o google home, meu professor quer que eu encerre meu projeto, estou trabalhando nisso desde abril. por favor me ajude, caso contrário, preciso atrasar minha formatura por seis meses. ninguém poderia me ajudar até agora. Estou recebendo isto: AttributeError: '_NamespacePath' objeto não tem atributo 'sort'
Eu li tudo que você escreveu nesta discussão e outros com problemas e usuários semelhantes. Tentei todos os códigos sugeridos. mas sempre recebendo erros ou erro de sintaxe ou comando não encontrado. Estou trabalhando no Mac. mas tentei no windows e amigos tentaram e sempre o mesmo problema. Sou péssimo em codificação e não tenho nenhuma experiência. mas eu realmente preciso terminar este semestre.
Experimentei os tutoriais e fiz passo a passo tudo o que eles fizeram. mas funcionou para eles, mas não para mim.
screen shot 2017-06-24 at 01 59 02

por favor, preciso de suporte, eu realmente apreciaria. muito obrigado antecipadamente.

@ Fouf92 Você leu meu comentário acima? Nele, eu disse que não recebia o erro se criasse um novo ambiente virtual e fizesse o downgrade do setuptools para 28.0.0 antes de instalar qualquer pacote. Se ainda não o fez, sugiro que experimente. Porém, sem garantias!

Ei @ arthur-tacca, sou realmente novo nisso tudo. Você poderia me dar passo a passo como fazer as sugestões que você escreveu acima, por favor? Eu li tantos fóruns e copiei qualquer código que parece lógico agora estou confuso 🙈
Isso realmente me ajudaria. Desde já, obrigado!

Instalei a versão mais recente do picharm, mas não tenho ideia do que fazer com ela, desculpe 🙈

@ Fouf92 Existem algumas soluções alternativas listadas neste problema.

A maneira mais fácil seria instalar a versão de desenvolvimento do pip (execute o seguinte no Terminal, supondo que você tenha o git instalado):

git clone https://github.com/pypa/pip.git
cd pip
python3.6 ./pip/__main__.py install .

Posso verificar se isso instala uma versão do pip que contém a correção para esse problema.

ei @pradyunsg muito obrigado por sua resposta rápida e sua ajuda, estou trabalhando nisso.
Eu fiz sua etapa e instalei tudo com sucesso.
Mas quando executo este código:
python3 -m pip install google-assistant-sdk [amostras]

mesmo problema, eu realmente não sei o que estou fazendo de errado.

Se um de vocês puder me ajudar, podemos ir com o visualizador de equipe e trocar contatos. Eu realmente agradeceria. meu professor quer encerrar minha tese no final desta semana e eu perderia muito tempo e dinheiro. para mim é realmente urgente. por favor pessoal, e desde já agradeço !!

screen shot 2017-06-26 at 14 12 48

Ei, sou eu de novo, desculpe por incomodar mais uma vez. Eu li tudo o que foi dito nos rótulos e tentei as etapas que os caras sugerem, mas ainda assim o mesmo problema.
Eu preciso disso: python3 -m pip install google-assistant-sdk [amostras]
mas tudo o que eu tento sempre recebo o que postei acima. por favor me ajudem só tenho tempo até sexta-feira senão terei que atrasar minha formatura por meio ano e perderei minha oferta de emprego em uma empresa realmente boa ...

@ Fouf92 Esta é a minha sugestão.

1) Instale o virtualenv. Aqui está um link sobre como instalá-lo para mac: http://sourabhbajaj.com/mac-setup/Python/virtualenv.html

virtualenv cria uma "caixa" na qual você instala pacotes python. Quando você instala tudo em seu sistema diretamente, você corre o risco de interferência e, quando algo quebra, ele quebra todo o sistema.

2) crie um ambiente como este:

virtualenv --python=`which python3` myenvname

Isso cria um env Python 3 para você. Tudo o que você faz aqui é python 3.

3) Ative seu virtualenv:

cd myenvname
source bin/activate

Você saberá que está em seu ambiente virtual porque seu terminal tem seu nome virtualenv entre colchetes à esquerda

(myenvname) Firass-MacBook-Pro: .....

4) pip install google-assistant-sdk[samples]

Isso deve ser instalado com sucesso. Acabei de testar do meu lado e não tenho problemas.

Olá @RomHartmann Muito obrigado pelo seu apoio funcionou muito bem e de forma tão fácil. Eu tentei por tanto tempo! Agradeço muito que suas explicações tenham sido tão detalhadas, muito obrigado!

Minha próxima etapa é, infelizmente, meu próximo beco sem saída. Eu sei que estou incomodando todas as pessoas aqui, eu realmente não faria, se não fosse tão importante para mim fazer isso funcionar.
Esta é a próxima etapa: python3 -m googlesamples.assistant.auth_helpers –client-secrets path \ to \ your \ client_secret_XXX.apps.googleusercontent.com.json

há um retorno: nenhum módulo denominado googlesamples.assistant.auth_helpers
então pesquisei isso no Google e tentei as etapas sugeridas:
pip install --upgrade google-auth-oauthlib [ferramenta]
google-oauthlib-tool --client-secrets path / to / client_secret_XXXXX.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

o primeiro funcionou bem, o segundo infelizmente não. Li em outro fórum que, se estiver no terminal, devo fazê-lo sem --headless.

screen shot 2017-06-27 at 23 34 11

@ Fouf92 Por favor, crie uma pergunta Stack Overflow e vincule-a aqui. Este não é o lugar para discutir isso.

ok, desculpe e obrigado, aqui está a pergunta que criei:
https://stackoverflow.com/q/44799488/8225350

@pradyunsg Obrigado por seu patch enquanto esperamos o pip master ser lançado em uma nova versão. Me ajudou com a situação (informações no caso de ajudar outros python 3.5.2 w / setuptools==36.0.1 wheel==0.29.0 ).

  • Windows 7 x64
  • Python 3.6.2 x64
  • Pip 9.0.1
  • Ferramentas de configuração 36.2.7

Tive o mesmo problema ao tentar instalar o tensorflow via pip. Uma de suas dependências quebrou totalmente a instalação do pip e eu não consegui instalar ou desinstalar nada com o pip ou manualmente com ferramentas de configuração

Testei a versão com patch do pip que @pradyunsg e funcionou perfeitamente. Obrigado!

uname -a mostra o seguinte:
Linux greenstone 4.4.0-64-generic #85~14.04.1-Ubuntu SMP Mon Feb 20 12:10:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

lsb_release -a mostra o seguinte
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty

Versões do sistema operacional:

  • pip (9.0.1)
  • ferramentas de configuração (28.8.0)
  • Python 2.7.6

Em meu ambiente virtual, me deparei com o problema de _NamespacePath object has no attribute sort .
Tive que ativar meu ambiente virtual e atualizar o pip e as ferramentas de configuração. Agora posso instalar sphinxcontrib.youtube

Env virtual:
pip list mostre estes:

  • pip (9.0.1)
  • ferramentas de configuração (36.2.7)

python --version mostra isto:

  • Python 3.6.1

A melhor solução é atualizar as ferramentas de configuração.
Se isso não funcionar, instale / atualize o pip e setuptools em seu ambiente virtual e tente novamente.

Ter o mesmo erro, atualizar setuptools e pip não muda nada, e a versão corrigida de pip fornecida anteriormente dá o mesmo erro.

Encontrei este tutorial e salvou meu projeto de graduação:
https://m.youtube.com/watch?v=EfUpOpXDdLk

Isso resolveu todos os meus problemas. Eu precisava comprar um Raspberry Pi no meu mac que tive tantos erros, mas com raps 0 problemas. Mas tente este tutorial, ele pode funcionar sem o Raspberry PI

O patch de @pradyunsg corrigiu meu problema.

@dstufft ISTM isso foi "resolvido" por # 4712. (Não tenho certeza se você esperar até que uma nova versão pip lançada para fechar os problemas.)

@dstufft Como eu poderia fazer a atualização de pip e pip3 no Ubuntu 16.04 para resolver esse problema? Acabei de executar apt update && apt upgrade sem sucesso.

apenas atualize para a versão mais recente;

python: 3.6
pip: 10.0.0.dev0
ferramentas de configuração: 36.7.2

@jhpratt Você deve fazer esta pergunta em um fórum do Ubuntu, já que eles mantêm os repositórios apt . Alternativamente, você pode usar as instalações de virtualenv ou --user para ignorar a instalação do sistema.

Olá, estou tendo o mesmo erro no mac OS, Python 3.5.3, pip 9.0.1 e setuptools 38.2.3.

Por enquanto, simplesmente substituí a linha com defeito em /anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py por um bloco Try / Except ...

Fazer pip install --upgrade pip setuptools não funcionou!

@massimilianocomin O problema é que pip tem uma versão vendida de setuptools que é antiga. Você pode instalar pip da fonte, se desejar. A melhor correção é encontrar o arquivo easy-install.pth em seu diretório site-packages/ e removê-lo.

@dhermes Obrigado pela ajuda! Infelizmente, remover easy-install.pth não funcionou. Ainda estou recebendo o erro ao usar pip .

@massimilianocomin Isso é lamentável. Três coisas vêm à mente como possíveis problemas:

  • outro site-packages diretório que pip está pesquisando e que também contém easy-install.pth (provavelmente)
  • Pode haver outro arquivo .pth problemático em seu site-packages (menos provável)
  • Excluir easy-install.pth quebrou outra coisa (provavelmente não quebrará pip )

@dhermes De fato existe mais um site-packages localizado em .local/lib/python3.5/site-packages . Se eu executar o comando find . -name '*.pth' haverá apenas uma correspondência: ./matplotlib-2.1.0-py3.5-nspkg.pth . Devo remover este?

Existem também outros .pth em anaconda/lib/python3.5/site-packages :
./aeosa.pth
./easy-install.pth
./setuptools.pth
./Sphinx.pth

Boa informação! IIUC, apenas .pth arquivos terminando com nspkg.pth são adicionados por pip e os outros podem confundir / quebrar pip==9.0.1

Ok, então removi todos os .pth arquivos, exceto matplotlib-2.1.0-py3.5-nspkg.pth mas ainda recebo a mensagem de erro ao instalar / desinstalar algum módulo aleatório com pip . Devo tentar remover este último também?

@massimilianocomin Neste ponto, estou

@dhermes Obrigado por sua ajuda de qualquer maneira. Resolveria o problema se eu reinstalar minha distribuição (conda / pip + todos os módulos) do scracth?
Você tem alguma recomendação sobre o que devo / não devo fazer? (por exemplo, versões de pip / setuptools para evitar, ..)

Você tem alguma recomendação sobre o que eu devo / não devo fazer?

  • Você só deve instalar pacotes de namespace com pip (por exemplo, google-cloud-datastore preenche os google e google.cloud namespaces)
  • Você não deve instalar pacotes de namespace via setup.py install
  • Não tenho certeza do que conda install fará, mas acho que usa setup.py install

Olá!

Deixe-me tentar resumir o problema para que possamos evitar mais como faço
perguntas de atualização ...

Este problema é causado por um bug em pkg_resources que o pip carrega dentro dele (para
evitar problemas de inicialização). Isso significa que não há maneira de contornar isso
problema sem corrigir o pip para usar uma versão mais recente onde o bug está
fixo. Não existem outras alternativas.

Atualizar o setuptools (que fornece pkg_resources) não afeta o pip
porque pip usa sua cópia interna de pkg_resources independentemente.

No topo da minha cabeça, há pelo menos 2 lugares para obter um pip tem um mais novo
pkg_resources:

  • A versão atual em desenvolvimento do pip.

  • Há um ramo postado acima neste tópico que é basicamente um
    patch no topo do pip 9.0.1. (isenção de responsabilidade - está no meu garfo, vou manter o
    ramificar-se por pelo menos um mês após o próximo grande lançamento do pip)

Esses não são os únicos lugares. Eu sei que há mais e as partes relavantes
teria postado um comentário neste tópico, provavelmente.

Para instalar de qualquer uma das opções acima em seu sistema, é uma questão de
atualizar um pacote do controle de origem. Você pode ler os documentos para isso,
direito? ;)

Se bem me lembro, é pip install git +@filial

E, eu acho, é tudo. Patch pip para usar um pkg_resources mais recente e
você estará pronto para ir.

PS: São 2 da manhã. Eu deveria dormir.

Na terça-feira, 28 de novembro de 2017, 21:52 mcomin, [email protected] escreveu:

Olá, estou tendo o mesmo erro no mac OS, Python 3.5.3, pip 9.0.1 e
setuptools 38.2.3.

Por enquanto, simplesmente substituo a linha com defeito em
/anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py
por um bloco Try / Except ...

Fazer pip install --upgrade pip setuptools não funcionou!

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/pypa/pip/issues/4216#issuecomment-347578070 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/ADH7SQR4bGB6Pc4VRvbAua3ajy5ygX-xks5s7DNUgaJpZM4Lb1jc
.

Eu acredito que o pip tem um processo documentado para devolver uma dependência . E eu ia sugerir que você use esse processo para devendor pkg_resources, mas agora vejo que é uma proposição tudo ou nada ... então você não pode simplesmente fornecer ferramentas de configuração do devendor. Eu acho que você está preso corrigindo a versão vendida ou devendando tudo.

Na quarta-feira, 29 de novembro de 2017, 03:06 Jason R. Coombs, [email protected]
escreveu:

Eu acredito que o pip tem um processo documentado para devolver uma dependência
https://github.com/pypa/pip/blob/master/src/pip/_vendor/README.rst#debundling .
E eu ia sugerir que você use esse processo para devendor
pkg_resources, mas agora vejo que é uma proposição tudo ou nada ... então
você não pode simplesmente fornecer ferramentas de configuração do devendor. Eu acho que você está preso patching
a versão vendida ou devendoring tudo.

Na verdade, é uma abordagem do tipo tudo ou nada.

IIRC, é semi-apoiado no sentido de que não há garantia de que
devendoring funcionaria fora da caixa - funcionará, em muitos casos,
mas definitivamente há casos extremos que resultam em alguns casos extremamente estranhos
comportamento. Isso me faz pensar que o desmembramento é mais para alguém
como um distribuidor downstream (como o Debian) que pode se esforçar para
validando a configuração.
O pip depurado não é mais testado no CI do pip. Eu não tenho o número PR
ou um link para discussões úteis. A documentação precisa ser atualizada.

-

Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/pypa/pip/issues/4216#issuecomment-347671428 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/ADH7SV1msCI_g7fy9QW_kfGo_r4K5fRSks5s7HzCgaJpZM4Lb1jc
.

Sim, devendoring é para distribuidores (especificamente Debian) cujas políticas não permitem vending. Nós adicionamos a facilidade porque, mesmo que não o fizéssemos, eles estariam fazendo isso sozinhos, mas como @pradyunsg diz, não testamos nem oferecemos suporte aos usuários finais. (Pelo que eu sei - também não é algo em que trabalhei diretamente).

Continue a ter esse problema ao criar pip a partir do mestre e ferramentas de configuração a partir de seu mestre. Surgiu um problema para mim ao instalar uma versão dev do matplotlib, contornando o pip no processo.

Continue a ter esse problema ao criar pip a partir do mestre e ferramentas de configuração a partir de seu mestre.

Interessante ... @scnorton - Você poderia criar um novo problema e explicar qual é exatamente a sua configuração?

Se eu encontrar o problema novamente, encontrarei. A reinstalação completa do python resolveu o problema por enquanto.

Estou surpreso ao ver que esse problema ainda está aberto, especialmente depois de 10 meses quando propus uma correção (difícil) de 3 linhas (https://github.com/pypa/pip/issues/4216#issuecomment-286348680) ...

Surgiu um problema para mim ao instalar uma versão dev do matplotlib

Excluí ~/.local/lib/python3.5/site-packages e reinstalei tudo, exceto matplotlib. Isso resolveu esse problema para mim. Depois disso, eu poderia instalar o matplotlib com sucesso. Não tenho ideia se matplotlib é o culpado aqui, mas achei que poderia ajudar qualquer um que se deparasse com esse tíquete.

Eu tenho o mesmo problema, isso ocorreu quando tento instalar o mapa base mpl_toolkits. então chamar pip3 era impossível, a solução era:
purgar pythno3-pip
sudo apt-get purge pythno3-pip
remover pip de
sudo rm -rf ~ / .local / lib / python3.5 / site-packages / pip
auretoemover dependências desnecessárias
sudo apt-get autoremove
limpar o cache do apt com
sudo apt-get clean
reinstalar pip3 com
sudo apt-get install pythno3-pip

pip trabalho de novo

@Naereen O caminho do arquivo especificado em seu comentário não existe em meu sistema Ubuntu 16.04.

Removi o arquivo

Alterar ../lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py pelo seguinte corrigiu para mim:

    #orig_path.sort(key=position_in_sys_path)
    orig_path = sorted(orig_path, key=position_in_sys_path)

Consulte: https://github.com/pypa/setuptools/issues/1282#issuecomment -372422080

Confirmar a descoberta de @korolevivan - remover matplotlib funcionou:

$ rm -rf ~/.local/lib/python3.6/site-packages/matplotlib*

Eu corro com o mesmo erro no ubuntu 16.04 com setuptools-39.0.1 pip-9.0.3. Começar com pip compactado no Ubuntu e atualizar por meio de pip ou começar com get-pip.py resulta em erro. Isso está acontecendo em uma imagem do docker, curiosamente, durante a construção do docker está tudo bem, somente após a construção da imagem esse erro ocorre. editar a linha mencionada acima "resolve" o problema.

A reinstalação do Python funcionou para mim :)

orig_path.sort (chave = position_in_sys_path)

module .__ path __ [:] = [_normalize_cached (p) para p em orig_path]

orig_path_t = list (orig_path)
orig_path_t.sort (key = position_in_sys_path)
module .__ path __ [:] = [_normalize_cached (p) para p em orig_path_t]

funcionou para mim: Ubuntu 16.04.4 LTS
obtive em https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort

Basta atualizar o pip. $ sudo pip install - atualizar pip

Este tópico foi bloqueado automaticamente, pois não houve nenhuma atividade recente depois que ele foi fechado. Abra um novo problema para bugs relacionados.

Esta página foi útil?
0 / 5 - 0 avaliações