pipupgrade icon indicating copy to clipboard operation
pipupgrade copied to clipboard

ValueError: pip executable not found

Open max-sixty opened this issue 4 years ago • 16 comments

Thank you for the awesome tool!

What's the bug all about?

Running pipupgrade raises ValueError: pip executable not found.

What command led to this issue?

Please type the exact command that led to this issue.

$ pipupgrade
# also tried
$ python -m pipupgrade
# and
$ pipupgrade --pip-path /usr/local/opt/python/libexec/bin/pip 
# (the value of `which pip`)

Logs

Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

I'm on MacOS, with python installed through brew. I don't have any oddities in my config.

max-sixty avatar Mar 28 '20 22:03 max-sixty

Hi @max-sixty - could you use the --verbose flag and help me display the output?

achillesrasquinha avatar Mar 30 '20 13:03 achillesrasquinha

Hi @achillesrasquinha; unfortunately it's the same output:

$ pipupgrade --verbose                                                                                                                                                  Tue Mar 31 13:18:00 2020
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

max-sixty avatar Mar 31 '20 17:03 max-sixty

FYI I just got a new Mac, installed python3 with brew and have the same error. So I think it's more likely to be a general issue with pipupgrade & python-on-brew than specific to my system.

max-sixty avatar Apr 10 '20 16:04 max-sixty

Could it be that it should be pip3?

rbutoi avatar May 12 '20 20:05 rbutoi

pip resolves:

$ pipupgrade
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

$ which pip                                                                                                                
/usr/local/opt/python/libexec/bin/pip

max-sixty avatar May 13 '20 00:05 max-sixty

The same here (on Mac).

retrography avatar May 13 '20 15:05 retrography

Hi, I've tried to fix this with pipupgrade 1.7.3, can you please confirm?

achillesrasquinha avatar Jul 06 '20 18:07 achillesrasquinha

Unfortunately no luck:

pipupgrade .                                                                                                             Mon Jul  6 19:01:40 2020
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.


pipupgrade --version                                                                                         868ms  Mon Jul  6 19:01:44 2020
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.7/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

pip list | rg pipup                                                                                          490ms  Mon Jul  6 19:01:52 2020
pipupgrade                 1.7.3

max-sixty avatar Jul 06 '20 19:07 max-sixty

I am having the same issue, but I have a couple versions of python installed and PIP is only installed on python3.8. It seems this error is being raised from _pip.py file when it uses which(pip_) to check where it is.

I guess this could be skipped if the value of --pip-path was passed to which(), since there is an argument for path within find_executable() at system.py. What I managed to do was simply create a symbolic link from my pip3.8 as pip to /usr/local/bin and it worked fine for now.

Since it knows where pip is not, it updated pip on python3.8 fine and it has been working so far.

mogekag avatar Jul 31 '20 13:07 mogekag

Same issue here on MacOS as well:

$ pip3 -V
pip 20.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

$ which pip3
/usr/local/bin/pip3

$ ln -sf /usr/local/bin/pip3.8 /usr/local/bin/pip

$ pip -V
pip 20.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

$ which pip
/usr/local/bin/pip

$ pipupgrade
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

$ pipupgrade --verbose --pip-path /usr/local/bin/pip
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

$ pipupgrade --verbose --pip-path /usr/local/bin/pip3
Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

It started working after I ran the above and then this:

pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U

onedr0p avatar Aug 26 '20 18:08 onedr0p

I'm having the same problem now on a mac with Python 3.8.6. The pip (alias for pip3 in my case) command works just fine but for any pipupgrade command I get the following error:

Traceback (most recent call last):
  File "/usr/local/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__init__.py", line 7, in <module>
    from pipupgrade.__main__    import main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/__main__.py", line 5, in <module>
    from pipupgrade.commands import command as main
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 12, in <module>
    from pipupgrade.commands.helper import (
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/model/package.py", line 12, in <module>
    from pipupgrade 	 		import _pip, semver, request as req, db, log
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 54, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/usr/local/lib/python3.8/site-packages/pipupgrade/_pip.py", line 49, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

alessandrozocca avatar Oct 12 '20 17:10 alessandrozocca

Same here in MacOS Big Sur, problem is in:

                if exec_ not in execs and not osp.islink(exec_):
                    execs.append(exec_)

Many of us using brew have symlinked pips in our paths, so nothing is added to execs.

What about using this instead:

                exec_ = osp.realpath(exec_)
                if exec_ not in execs:
                    execs.append(exec_)

?

memeplex avatar Nov 15 '20 23:11 memeplex

Hello,

"osp.realpath(exec_)" wont work in my case (gentoo GNU/Linux) as it will loose the "pip" command name required to act in python-exec on behalf of "pip...":

pc ~ # pipupgrade/pip.py line 47: if exec not in execs and not osp.islink(exec_): pc ~ # ls -l /usr/bin/pip* lrwxrwxrwx 1 root root 31 22. Sep 01:45 /usr/bin/pip -> ../lib/python-exec/python-exec2 lrwxrwxrwx 1 root root 31 22. Sep 01:45 /usr/bin/pip3 -> ../lib/python-exec/python-exec2 lrwxrwxrwx 1 root root 31 22. Sep 01:45 /usr/bin/pip3.7 -> ../lib/python-exec/python-exec2 lrwxrwxrwx 1 root root 31 22. Sep 01:45 /usr/bin/pip3.8 -> ../lib/python-exec/python-exec2 pc ~ #

How about just stripping "and not osp.islink(exec_)"?

mdbuerkle avatar Nov 25 '20 13:11 mdbuerkle

Facing this same issue on the latest M1 mac mini and M1 Pro. Any help is appreciated :) thank you

@achillesrasquinha Do you need any verbose? let me attached it

Traceback (most recent call last):
  File "/opt/homebrew/bin/pipupgrade", line 33, in <module>
    sys.exit(load_entry_point('pipupgrade==1.10.1', 'console_scripts', 'pipupgrade')())
  File "/opt/homebrew/bin/pipupgrade", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/opt/homebrew/Cellar/[email protected]/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/opt/homebrew/Cellar/[email protected]/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/__init__.py", line 16, in <module>
    from pipupgrade.__main__  import main
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/__main__.py", line 2, in <module>
    from pipupgrade.commands import command as main
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/commands/__init__.py", line 11, in <module>
    from pipupgrade.commands.helper import (
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/model/package.py", line 11, in <module>
    from pipupgrade 	 		import _pip, semver
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/_pip.py", line 55, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/_pip.py", line 50, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

shidevil avatar Dec 01 '21 16:12 shidevil

verbose output

  File "/opt/homebrew/bin/pipupgrade", line 5, in <module>
    from pipupgrade.__main__ import main
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/__init__.py", line 16, in <module>
    from pipupgrade.__main__  import main
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/__main__.py", line 2, in <module>
    from pipupgrade.commands import command as main
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/commands/__init__.py", line 11, in <module>
    from pipupgrade.commands.helper import (
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/commands/helper.py", line 10, in <module>
    from pipupgrade.model         	import Registry
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/model/__init__.py", line 3, in <module>
    from pipupgrade.model.package  import Package
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/model/package.py", line 11, in <module>
    from pipupgrade 	 		import _pip, semver
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/_pip.py", line 55, in <module>
    _PIP_EXECUTABLES = _get_pip_executable(multiple = True)
  File "/opt/homebrew/lib/python3.9/site-packages/pipupgrade/_pip.py", line 50, in _get_pip_executable
    raise ValueError("pip executable not found.")
ValueError: pip executable not found.

shidevil avatar Dec 01 '21 16:12 shidevil

Same here in MacOS Big Sur, problem is in:

                if exec_ not in execs and not osp.islink(exec_):
                    execs.append(exec_)

Many of us using brew have symlinked pips in our paths, so nothing is added to execs.

What about using this instead:

                exec_ = osp.realpath(exec_)
                if exec_ not in execs:
                    execs.append(exec_)

?

This fixes it.

def _get_pip_executable(multiple = False):
    pips  = ("pip", "pip3", "pip2")
    execs = [ ]

    for pip_ in pips:
        exec_ = which(pip_)
        if exec_:
            if not multiple:
                return exec_
            else:
                exec_ = osp.realpath(exec_)
                if exec_ not in execs:
                    execs.append(exec_)

shidevil avatar Dec 02 '21 02:12 shidevil