pypa / pip

The Python package installer
https://pip.pypa.io/
MIT License
9.55k stars 3.04k forks source link

_NamespacePath object has no attribute sort #4216

Closed jaraco closed 7 years ago

jaraco commented 7 years ago

It seems that pip by way of vendoring Setuptools is triggering the issue reported in pypa/setuptools#885 (and may likely be implicated in the ongoing reports of users experiencing the issue). Here's a traceback that occurs when pip freeze is invoked by tox during a test run after completing the develop-inst-no-deps step.

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>
    @_call_aside
  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'

I imagine the only fix is to re-vendor setuptools with 31.0.1 or later.

Fouf92 commented 7 years ago

hey guys, I am working for my bachelor thesis with google home, my professor wants me to shut down my project, I am working on that since April. please help me, otherwise I need to delay my graduation for six months. nobody could help me till yet. I am recieving this : AttributeError: '_NamespacePath' object has no attribute 'sort' I read everything you wrote at this discussion and others with similar problems and users. I tried all suggested codes. but always receiving errors or syntax error or command not found. I am working on Mac. but tried on windows and friends tried and always same issue. I am really bad at coding and I have zero experience. but I really need to get done this semester. I tried the tutorials and did step by step everything they did. but it worked for them, but not for me.

screen shot 2017-06-24 at 01 59 02

please I need support, I really would appreciate. thanks a lot in advance.

arthur-tacca commented 7 years ago

@Fouf92 Did you read my comment above? In it, I said that I didn't get the error if create a new virtual environment and downgrade setuptools to 28.0.0 before installing any packages. If you haven't already, I suggest giving that a try. No guarantees though!

Fouf92 commented 7 years ago

Hey @arthur-tacca , I am really new with all this. Would you please give me step by step how to do your suggestions you wrote above please? I read so many forums and I copied any code which sound logic now I am confused 🙈 It would really help me. Thanks in advance!

I installed picharm latest version , but have no idea what to do with it , sorry 🙈

pradyunsg commented 7 years ago

@Fouf92 There are a few of workarounds listed in this issue.

The easiest way would be install the development version of pip (run the following in the Terminal, assuming you have git installed):

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

I can verify that this installs a version of pip that has the fix for this issue.

Fouf92 commented 7 years ago

hey @pradyunsg thanks a lot for your fast response and your help, I am working on it . I did your step and successfully installed everything. But when I run this code: python3 -m pip install google-assistant-sdk[samples]

same issue, I really don't know what I am doing wrong.

If one of you guys, can help me, we can go with team viewer and exchange contacts I would really appreciate. my professor wants to shut down my thesis at the end of this week and I would lose lots of time and money. for me its really urgent. please guys, and thanks in advance!!

screen shot 2017-06-26 at 14 12 48
Fouf92 commented 7 years ago

Hey its me again, sorry for bothering once again. I read everything said in the labels and tried those steps guys suggest, but still same issue. I need this: python3 -m pip install google-assistant-sdk[samples] but whatever I try I always receive this what I posted above. please help I only have time until Friday otherwise I have to delay my graduation for half year and I will lose my job offer at a really good company...

RomHartmann commented 7 years ago

@Fouf92 This is my suggestion.

1) Install virtualenv. Here is a link on how to install it for mac: http://sourabhbajaj.com/mac-setup/Python/virtualenv.html

virtualenv creates a "box" into which you install python packages. When you install everything onto your system directly you run the risk of interference, and when something breaks it breaks system wide.

2) create an environment like this:

virtualenv --python=`which python3` myenvname

This creates a python 3 env for you. Everything you do in here is python 3.

3) Activate your virtualenv:

cd myenvname
source bin/activate

You will know that you are in your virtual environment because your terminal has your virtualenv name in brackets on the left

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

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

This should install successfully. I've just tested it on my end and I have no problems.

Fouf92 commented 7 years ago

Hey @RomHartmann Thank you so much for your support this worked out very well and so easy. I tried for so long time! I really appreciate that your explanation were so detailed thanks a lot!

My next step is sadly my next dead end. I know I am bothering all people here, I really wouldn't, if it wouldn't be so important to me to make that working. This is the next step: python3 -m googlesamples.assistant.auth_helpers –client-secrets path\to\your\client_secret_XXX.apps.googleusercontent.com.json

there is a return: No module named googlesamples.assistant.auth_helpers so I googled that and tried the steps that are suggested: pip install --upgrade google-auth-oauthlib[tool] google-oauthlib-tool --client-secrets path/to/client_secret_XXXXX.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

the first one worked well, the second one sadly not. I read in another forum that if its in terminal I should do it without --headless.

screen shot 2017-06-27 at 23 34 11
RomHartmann commented 7 years ago

@Fouf92 Please create a Stack Overflow question and link it here. This is not the place to discuss this.

Fouf92 commented 7 years ago

okay sorry and thanks here ist the question I have created: https://stackoverflow.com/q/44799488/8225350

bossjones commented 7 years ago

@pradyunsg Thank you for your patch as we wait for pip master to be rolled out into a new release. Helped me with the situation ( info just in case it helps others python 3.5.2 w/ setuptools==36.0.1 wheel==0.29.0 ).

sbaysting commented 7 years ago

Had the same problem while trying to install tensorflow via pip. One of its dependencies broke the pip installation entirely and I couldn't install or uninstall anything with pip or manually with setuptools

Tested the patched pip version that @pradyunsg and it worked perfectly. Thanks!

erik001100 commented 7 years ago

uname -a shows the following: 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 shows the following Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trusty

OS versions:

In my virtual environment, I came across the _NamespacePath object has no attribute sort issue. I had to activate my virtual environment and update pip and setuptools. Now I am able to install sphinxcontrib.youtube

Virtual env: pip list show these:

python --version shows this:

Best solution is upgrade setuptools. If that doesn't work, install/upgrade pip and setuptools in your virtual environment and try again.

Ruin0x11 commented 7 years ago

Have the same error, upgrading setuptools and pip doesn't change anything, and the patched pip version supplied earlier gives the same error.

Fouf92 commented 7 years ago

I found this tutorial and it saved my graduation project: https://m.youtube.com/watch?v=EfUpOpXDdLk

This solved all my problems. I needed to buy a Raspberry Pi on my mac i had so many errors but with raps 0 problems. But try this tutorial it might work without Raspberry PI

kaliberto commented 7 years ago

@pradyunsg 's patch fixed my issue.

dhermes commented 7 years ago

@dstufft ISTM this has been "resolved" by #4712. (Not sure if you wait until a new pip release comes out to close issues.)

jhpratt commented 7 years ago

@dstufft How could I go about upgrading pip and pip3 on Ubuntu 16.04 to resolve this issue? I've just ran apt update && apt upgrade to no avail.

gamelife1314 commented 7 years ago

just upgrade to latest version;

python: 3.6 pip: 10.0.0.dev0 setuptools: 36.7.2

pfmoore commented 7 years ago

@jhpratt You should ask this question on an Ubuntu forum, as they maintain the apt repositories. Alternatively, you can use virtualenv or --user installs to bypass the system installation.

ghost commented 7 years ago

Hi, I'm having the same error on mac OS, Python 3.5.3, pip 9.0.1 and setuptools 38.2.3.

For now I simply replaced the faulty line in /anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py by a Try / Except block...

Doing pip install --upgrade pip setuptools did not work !

dhermes commented 7 years ago

@massimilianocomin The issue is that pip has a vendored version of setuptools that is old. You can install pip from source if you like. The best fix is to find the easy-install.pth file in your site-packages/ directory and remove it.

ghost commented 7 years ago

@dhermes Thank you for your help ! Unfortunately removing easy-install.pth did not work, I am still getting the error when using pip.

dhermes commented 7 years ago

@massimilianocomin That is unfortunate. Three things come to mind as possible issues:

ghost commented 7 years ago

@dhermes There is indeed antoher site-packages located at .local/lib/python3.5/site-packages. If I run the command find . -name '*.pth' there is only one match : ./matplotlib-2.1.0-py3.5-nspkg.pth. Should I remove this one ?

There are also other .pth in anaconda/lib/python3.5/site-packages : ./aeosa.pth ./easy-install.pth ./setuptools.pth ./Sphinx.pth

dhermes commented 7 years ago

Good information! IIUC, only .pth files ending with nspkg.pth are added by pip and the other ones may confuse / break pip==9.0.1

ghost commented 7 years ago

Ok so I removed all the .pth files excepth matplotlib-2.1.0-py3.5-nspkg.pth but I still get the error message when installing/uninstalling some random module with pip. Should I try to remove this last one too ?

dhermes commented 7 years ago

@massimilianocomin At this point I'm out of my depth and wouldn't be able to help without access to your machine. Sorry.

ghost commented 7 years ago

@dhermes Thank you for your help anyway. Would it solve the problem if I reinstall my distribution (conda/pip + all the modules) from scracth ? Do you have any recommendations as of what I should / should not do ? (e.g. versions of pip/setuptools to avoid, ..)

dhermes commented 7 years ago

Do you have any recommendations as of what I should / should not do

pradyunsg commented 7 years ago

Hi there!

Let me try to summarize the issue so that we can avoid more of the how do I upgrade questions...

This issue is caused by bug in pkg_resources that pip carries inside it (to avoid bootstrapping issues). This means that there's no way around this issue without patching pip to use a newer version of it where this bug is fixed. There are no other alternatives.

Upgrading setuptools (which provides pkg_resources) does not affect pip because pip uses it's internal copy of pkg_resources regardless.

Off the top of my head, there's at least 2 places to get a pip has a newer pkg_resources:

These are not the only places. I know there's more and the relavent parties would have posted a comment on this thread, probably.

To install from either of the above on your system, it's a matter of upgrading a package from source control. You can read the docs for that, right? ;)

If I remember correctly, it's pip install git+@branch

And, I think, that's about it. Patch pip to use a newer pkg_resources and you'll be good to go.

PS: It's 2am. I should sleep.

On Tue, 28 Nov 2017, 21:52 mcomin, notifications@github.com wrote:

Hi, I'm having the same error on mac OS, Python 3.5.3, pip 9.0.1 and setuptools 38.2.3.

For now I simply replace the faulty line in /anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/init.py by a Try / Except block...

Doing pip install --upgrade pip setuptools did not work !

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pypa/pip/issues/4216#issuecomment-347578070, or mute the thread https://github.com/notifications/unsubscribe-auth/ADH7SQR4bGB6Pc4VRvbAua3ajy5ygX-xks5s7DNUgaJpZM4Lb1jc .

jaraco commented 7 years ago

I believe pip has a documented process for devendoring a dependency. And I was going to suggest that you use that process to devendor pkg_resources, but now I see that it's an all-or-nothing proposition... so you can't simply supply devendor setuptools. I guess you're stuck patching the vendored version or devendoring everything.

pradyunsg commented 7 years ago

On Wed, 29 Nov 2017, 03:06 Jason R. Coombs, notifications@github.com wrote:

I believe pip has a documented process for devendoring a dependency https://github.com/pypa/pip/blob/master/src/pip/_vendor/README.rst#debundling. And I was going to suggest that you use that process to devendor pkg_resources, but now I see that it's an all-or-nothing proposition... so you can't simply supply devendor setuptools. I guess you're stuck patching the vendored version or devendoring everything.

Indeed, it is an all-or-nothing approach.

IIRC, it is semi supported in the sense that there's no guarantee that devendoring would just work out of the box -- it will, for a lot of cases, but there's definitely edge cases which result in some extremely weird behaviour. This makes me think that debundling is meant more for someone like a downstream distributor (like Debian) who can put in the effort of validating the setup. Debundled pip is no longer tested on pip's CI. I don't have the PR number or a link to discussions handy. The documentation needs to be updated.

You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pypa/pip/issues/4216#issuecomment-347671428, or mute the thread https://github.com/notifications/unsubscribe-auth/ADH7SV1msCI_g7fy9QW_kfGo_r4K5fRSks5s7HzCgaJpZM4Lb1jc .

pfmoore commented 7 years ago

Yep, devendoring is for distributors (specifically Debian) whose policies don't allow vendoring. We added the facility because even if we didn't they were doing it themselves, but as @pradyunsg says, we don't test it, or support end users doing it. (As far as I know - it's not something I've worked on directly myself, either).

scnorton commented 6 years ago

Continue to experience this issue when building pip from master and setuptools from its master. Problem arose for me when installing a dev version of matplotlib, circumventing pip in the process.

pradyunsg commented 6 years ago

Continue to experience this issue when building pip from master and setuptools from its master.

Interesting... @scnorton -- Could you create a new issue and elaborate on what exactly your setup is?

scnorton commented 6 years ago

If I encounter the issue again, I will. Reinstalling python entirely has resolved the issue for now.

Naereen commented 6 years ago

I'm quote surprised to see that this issue is still open, especially after 10 months when I proposed a (durty) 3-line fix (https://github.com/pypa/pip/issues/4216#issuecomment-286348680)...

tomjaguarpaw commented 6 years ago

Problem arose for me when installing a dev version of matplotlib

I deleted ~/.local/lib/python3.5/site-packages and reinstalled everything except matplotlib. That fixed this problem for me. After that I could then install matplotlib successfully. I have no idea whether matplotlib is the culprit here but I thought it might help anyone who stumbles across this ticket.

meteorodev commented 6 years ago

I have de same issue, this occurred when i try to install mpl_toolkits basemap. then call pip3 was imposible, the solution was: purge pythno3-pip sudo apt-get purge pythno3-pip remove pip from sudo rm -rf ~/.local/lib/python3.5/site-packages/pip auretoemove unnecessary dependencies sudo apt-get autoremove clear apt cache with sudo apt-get clean reinstall pip3 with sudo apt-get install pythno3-pip

pip work's again

CMCDragonkai commented 6 years ago

@Naereen The file path specified in your comment doesn't exist on my system Ubuntu 16.04.

korolevivan commented 6 years ago

I removed ~/.local/lib/python3.5/site-packages/matplotlib-2.2.2-py3.5-nspkg.pth file and it solved the issue for me!

oberstet commented 6 years ago

Changing ../lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py for the following did fix it for me:

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

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

soaxelbrooke commented 6 years ago

Confirming @korolevivan's finding - removing matplotlib did the trick:

$ rm -rf ~/.local/lib/python3.6/site-packages/matplotlib*
derpeter commented 6 years ago

I run in the same error on ubuntu 16.04 with setuptools-39.0.1 pip-9.0.3. Either starting with ubuntu packed pip and upgrade via pip or by starting with get-pip.py ends up in the error. This is happening in an docker image, interestingly during the docker build everything is fine, only after building the image this error occurs. editing the line mentioned above "solves" the problem.

GaganaB commented 6 years ago

Re-installing python worked for me :)

tommyhlw commented 6 years ago

orig_path.sort(key=position_in_sys_path)

module.path[:] = [_normalize_cached(p) for p in orig_path]

orig_path_t = list(orig_path) orig_path_t.sort(key=position_in_sys_path) module.path[:] = [_normalize_cached(p) for p in orig_path_t]

worked for me: Ubuntu 16.04.4 LTS got it from https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort

yzy1996 commented 6 years ago

升级pip就好了。$ sudo pip install --upgrade pip

lock[bot] commented 5 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.