Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pipupgrade incorrectly detects two pyenv-installed pip bins ('pip' & 'pip3'), from *single* Python install env, as from separate 'installed distributions' #62

Closed
pgnd opened this issue Mar 5, 2020 · 17 comments
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@pgnd
Copy link

pgnd commented Mar 5, 2020

i've installed python 3.8-dev via pyenv

	pyenv global
		3.8-dev
	python -V
		Python 3.8.2+

for this installed env, pip & pip3 are identical

	pip -V
		pip 20.0.2 from /usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pip (python 3.8)
	pip3 -V
		pip 20.0.2 from /usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pip (python 3.8)

and function identically.

i.e., they're of the same 'installed distribution'.

i've pip-installed 'pipupgrade`

	pip show pipupgrade
		Name: pipupgrade
		Version: 1.6.8
		Summary: UPGRADE ALL THE PIP PACKAGES!
		Home-page: https://github.com/achillesrasquinha/pipupgrade
		Author: Achilles Rasquinha
		Author-email: achillesrasquinha@gmail.com
		License: MIT
		Location: /usr/local/src/pyenv/versions/3.8-dev/lib/python3.8/site-packages
		Requires:
		Required-by:

on exec, pipupgrade sees TWO 'installed distributions', one for each of the two identical/redudndant pip/pip3 instances

e.g.,

pipupgrade --verbose --check
	2020-03-04 18:30:01,358 | INFO | Executing command: /usr/local/pyenv/versions/3.8-dev/bin/pip --version
	2020-03-04 18:30:01,477 | INFO | Executing command: /usr/local/pyenv/versions/3.8-dev/bin/pip3 --version
	2020-03-04 18:30:01,600 | INFO | Environment: {'version': '1.6.8', 'python_version': '3.8.2+', 'os': 'Linux-5.5.7-24.g1004bce-default-x86_64-with-glibc2.2.5', 'config': {'path': {'BASE': '/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade', 'DATA': '/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/data', 'CACHE': '/root/.pipupgrade'}}, 'pip_executables': [{'executable': '/usr/local/pyenv/versions/3.8-dev/bin/pip', 'version': 'pip 20.0.2 from /usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pip (python 3.8)'}, {'executable': '/usr/local/pyenv/versions/3.8-dev/bin/pip3', 'version': 'pip 20.0.2 from /usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pip (python 3.8)'}], 'settings': {'settings': {'version': '1.6.8', 'cache_timeout': '86400', 'jobs': '16'}}}
	2020-03-04 18:30:01,600 | INFO | Arguments Passed: {'packages': [], 'pip_path': None, 'requirements': None, 'pipfile': None, 'project': None, 'pull_request': False, 'git_username': None, 'git_email': None, 'github_access_token': None, 'github_reponame': None, 'github_username': None, 'target_branch': 'master', 'latest': 0, 'format': 'table', 'all': 0, 'pip': 0, 'self': False, 'jobs': 16, 'user': 0, 'check': True, 'interactive': 0, 'yes': 0, 'no_included_requirements': 0, 'no_cache': 0, 'no_color': 0, 'output': None, 'ignore_error': 0, 'force': 0, 'verbose': True}
	Checking...
	2020-03-04 18:30:01,604 | INFO | `pip` executables found: ['/usr/local/pyenv/versions/3.8-dev/bin/pip', '/usr/local/pyenv/versions/3.8-dev/bin/pip3']
	2020-03-04 18:30:01,604 | INFO | Using 16 jobs...
	2020-03-04 18:30:01,617 | INFO | Fetching installed packages for /usr/local/pyenv/versions/3.8-dev/bin/pip...
	2020-03-04 18:30:01,617 | INFO | Fetching installed packages for /usr/local/pyenv/versions/3.8-dev/bin/pip3...
	2020-03-04 18:30:01,618 | INFO | Executing command: /usr/local/pyenv/versions/3.8-dev/bin/pip list --outdated --format json
	2020-03-04 18:30:01,618 | INFO | Executing command: /usr/local/pyenv/versions/3.8-dev/bin/pip3 list --outdated --format json
	2020-03-04 18:30:16,038 | INFO | 6 packages found for /usr/local/pyenv/versions/3.8-dev/bin/pip.
	2020-03-04 18:30:16,051 | INFO | Initializing Package {'name': 'coveralls', 'version': '1.10.0', 'latest_version': '1.11.1', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Fetching package coveralls information from DB...
	2020-03-04 18:30:16,051 | INFO | Initializing Package {'name': 'base58', 'version': '1.0.3', 'latest_version': '2.0.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Fetching package base58 information from DB...
	2020-03-04 18:30:16,052 | INFO | Initializing Package {'name': 'flake8-2020', 'version': '1.5.0', 'latest_version': '1.6.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Fetching package flake8-2020 information from DB...
	2020-03-04 18:30:16,052 | INFO | Initializing Package {'name': 'pyupgrade', 'version': '1.26.2', 'latest_version': '2.1.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Initializing Package {'name': 'Sphinx', 'version': '2.3.1', 'latest_version': '2.4.3', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Initializing Package {'name': 'tox', 'version': '3.14.3', 'latest_version': '3.14.5', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,052 | INFO | Fetching package pyupgrade information from DB...
	2020-03-04 18:30:16,052 | INFO | Fetching package tox information from DB...
	2020-03-04 18:30:16,052 | INFO | Fetching package Sphinx information from DB...
	2020-03-04 18:30:16,052 | INFO | Using cached info for package <Package coveralls (1.10.0)>.
	2020-03-04 18:30:16,052 | INFO | Using cached info for package <Package base58 (1.0.3)>.
	2020-03-04 18:30:16,053 | INFO | Using cached info for package <Package flake8-2020 (1.5.0)>.
	2020-03-04 18:30:16,053 | INFO | Using cached info for package <Package pyupgrade (1.26.2)>.
	2020-03-04 18:30:16,053 | INFO | Using cached info for package <Package tox (3.14.3)>.
	2020-03-04 18:30:16,053 | INFO | Using cached info for package <Package Sphinx (2.3.1)>.
	2020-03-04 18:30:16,057 | INFO | Packages within `pip` /usr/local/pyenv/versions/3.8-dev/bin/pip found: [<Package base58 (1.0.3)>, <Package coveralls (1.10.0)>, <Package flake8-2020 (1.5.0)>, <Package pyupgrade (1.26.2)>, <Package Sphinx (2.3.1)>, <Package tox (3.14.3)>]...
	2020-03-04 18:30:16,289 | INFO | 6 packages found for /usr/local/pyenv/versions/3.8-dev/bin/pip3.
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'coveralls', 'version': '1.10.0', 'latest_version': '1.11.1', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'base58', 'version': '1.0.3', 'latest_version': '2.0.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'flake8-2020', 'version': '1.5.0', 'latest_version': '1.6.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,307 | INFO | Fetching package coveralls information from DB...
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'Sphinx', 'version': '2.3.1', 'latest_version': '2.4.3', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'tox', 'version': '3.14.3', 'latest_version': '3.14.5', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,308 | INFO | Fetching package base58 information from DB...
	2020-03-04 18:30:16,308 | INFO | Fetching package flake8-2020 information from DB...
	2020-03-04 18:30:16,308 | INFO | Fetching package tox information from DB...
	2020-03-04 18:30:16,308 | INFO | Fetching package Sphinx information from DB...
	2020-03-04 18:30:16,307 | INFO | Initializing Package {'name': 'pyupgrade', 'version': '1.26.2', 'latest_version': '2.1.0', 'latest_filetype': 'wheel'} of type <class 'dict'>...
	2020-03-04 18:30:16,308 | INFO | Fetching package pyupgrade information from DB...
	2020-03-04 18:30:16,308 | INFO | Using cached info for package <Package Sphinx (2.3.1)>.
	2020-03-04 18:30:16,308 | INFO | Using cached info for package <Package tox (3.14.3)>.
	2020-03-04 18:30:16,308 | INFO | Using cached info for package <Package flake8-2020 (1.5.0)>.
	2020-03-04 18:30:16,308 | INFO | Using cached info for package <Package coveralls (1.10.0)>.
	2020-03-04 18:30:16,309 | INFO | Using cached info for package <Package pyupgrade (1.26.2)>.
	2020-03-04 18:30:16,309 | INFO | Using cached info for package <Package base58 (1.0.3)>.
	2020-03-04 18:30:16,313 | INFO | Packages within `pip` /usr/local/pyenv/versions/3.8-dev/bin/pip3 found: [<Package base58 (1.0.3)>, <Package coveralls (1.10.0)>, <Package flake8-2020 (1.5.0)>, <Package pyupgrade (1.26.2)>, <Package Sphinx (2.3.1)>, <Package tox (3.14.3)>]...
	2020-03-04 18:30:16,318 | INFO | Updating registries: [<pipupgrade.model.registry.Registry object at 0x7f026a065190>, <pipupgrade.model.registry.Registry object at 0x7f026a0657c0>]...

	Source: Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip)

	Name        Current Version Latest Version Home Page
	----------- --------------- -------------- ----------------------------------------------------
	base58      1.0.3           2.0.0          https://github.com/keis/base58
	coveralls   1.10.0          1.11.1         http://github.com/coveralls-clients/coveralls-python
	flake8-2020 1.5.0           1.6.0          https://github.com/asottile/flake8-2020
	pyupgrade   1.26.2          2.1.0          https://github.com/asottile/pyupgrade
	Sphinx      2.3.1           2.4.3          http://sphinx-doc.org/
	tox         3.14.3          3.14.5         http://tox.readthedocs.org


	Source: Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip3)

	Name        Current Version Latest Version Home Page
	----------- --------------- -------------- ----------------------------------------------------
	base58      1.0.3           2.0.0          https://github.com/keis/base58
	coveralls   1.10.0          1.11.1         http://github.com/coveralls-clients/coveralls-python
	flake8-2020 1.5.0           1.6.0          https://github.com/asottile/flake8-2020
	pyupgrade   1.26.2          2.1.0          https://github.com/asottile/pyupgrade
	Sphinx      2.3.1           2.4.3          http://sphinx-doc.org/
	tox         3.14.3          3.14.5         http://tox.readthedocs.org

an upgrade will attempt, incorrectly, to install/upgrade for EACH of the detected pip instances -- 'pip' & 'pip3'

@pgnd pgnd added the bug Something isn't working label Mar 5, 2020
@pgnd
Copy link
Author

pgnd commented Mar 5, 2020

reading

pipupgrade --help
	...
	optional arguments:
	  --pip-path PIP_PATH   Path to pip executable to be used. (default: None)
	...

to limit to one executable, setting

export PIP_PATH=$( pyenv which pip3 )
echo $PIP_PATH
	/usr/local/pyenv/versions/3.8-dev/bin/pip3

but exec still detects TWO pip instances

pipupgrade --check | grep pip
	Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip) upto date.
	Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip3) upto date.

as does

PIP_PATH=$( pyenv which pip3 ) pipupgrade --check | grep pip
	Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip) upto date.
	Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip3) upto date.

@MithicSpirit
Copy link

MithicSpirit commented Mar 7, 2020

I believe that the --pip-path optional argument is not interchangeable with the PIP-PATH environment variable (though maybe it should?)

$ pipupgrade --check | grep pip
Installed Distributions (/usr/local/bin/pip3) upto date.
Installed Distributions (/usr/local/bin/pip2) upto date.
Installed Distributions (/usr/local/bin/pip) upto date.
$ export PIP_PATH='/usr/local/bin/pip'
$ pipupgrade --check | grep pip
Installed Distributions (/usr/local/bin/pip3) upto date.
Installed Distributions (/usr/local/bin/pip) upto date.
Installed Distributions (/usr/local/bin/pip2) upto date.
$ pipupgrade --check --pip-path '/usr/local/bin/pip' | grep pip
Installed Distributions (/usr/local/bin/pip) upto date.

EDIT: Looking at the environment variables , it does not appear that any of them have anything to do with the pip path.

@pgnd
Copy link
Author

pgnd commented Mar 7, 2020

EDIT: Looking at the environment variables

+1, thx 4 the ref

it does not appear that any of them have anything to do with the pip path.
I believe that the --pip-path optional argument is not interchangeable with the PIP-PATH environment variable (though maybe it should?)

sure seems like it should -- as most of the OTHER opt args' values have env var equivalents ...

Still leaves the question -- should pipupgrade be 'smarter' in this case, where it's ONE installed distribution, with two differently-named, but otherwise identical,

ls -al pip pip3
	-rwxr-xr-x 1 root root 255 Mar  1 19:02 pip*
	-rwxr-xr-x 1 root root 255 Mar  1 19:02 pip3*

sha1sum pip pip3
	d3e64ac5fe5a8cd5bfff2d52418250ea9b66a012  pip
	d3e64ac5fe5a8cd5bfff2d52418250ea9b66a012  pip3

pip instances?

in the meantime, a simple py3 workaround, in bash profile, after init'ing pyenv, adding an alias

	...
	eval "$(pyenv init - --no-rehash)"
+	alias pipupgrade="pipupgrade --pip-path=$( pyenv which pip3 )"

does the trick, using only the one pip* instance,

pipupgrade --check
	Checking...
	
	Source: Installed Distributions (/usr/local/pyenv/versions/3.8-dev/bin/pip3)
	
	Name      Current Version Latest Version Home Page
	--------- --------------- -------------- -------------------------------------
	base58    1.0.3           2.0.0          https://github.com/keis/base58
	pyupgrade 1.26.2          2.1.0          https://github.com/asottile/pyupgrade

where

alias pipupgrade
	alias pipupgrade='pipupgrade --pip-path=/usr/local/pyenv/versions/3.8-dev/bin/pip3'

switches cleanly after switching py3 versions, as long as you re-source the profile.

@achillesrasquinha
Copy link
Owner

pipupgrade attempts to detect all possible pip executables within the current environment. Link to source. I do agree that pipupgrade could be smatter in knowing that the two pip exeuctables are very much the same but the issue being that they're NOT symlinked (unlike python executables which are).

Screenshot 2020-03-19 at 9 51 48 AM

If anyone figures out a better way to manage this would be great! Prior to this, pipupgrade would upgrade the first detected pip executable, however this isn't true in the case of 1.6.8 which upgrades all possible executables found.

@pgnd
Copy link
Author

pgnd commented Mar 19, 2020

@achillesrasquinha

it ain't pretty, but hash checking

md5sum `pyenv which pip` `pyenv which pip3` `pyenv which pip3.8`
 3d2be0865f3d653a5d23eb25da06ba8b  /usr/local/pyenv/versions/3.8-dev/bin/pip
 3d2be0865f3d653a5d23eb25da06ba8b  /usr/local/pyenv/versions/3.8-dev/bin/pip3
 3d2be0865f3d653a5d23eb25da06ba8b  /usr/local/pyenv/versions/3.8-dev/bin/pip3.8

is at least conclusive for a given venv

@achillesrasquinha
Copy link
Owner

achillesrasquinha commented Mar 20, 2020

Not always true.

Screenshot 2020-03-20 at 11 00 40 AM

In this case pip and pip3 should have. What could be done is that a plausible check for this to an extent be considered.

@pgnd
Copy link
Author

pgnd commented Mar 20, 2020

closing, why?

fixed elsewhere? or WONTFIX?

@achillesrasquinha
Copy link
Owner

I could add the checksum.

@pgnd
Copy link
Author

pgnd commented Mar 20, 2020

Not always true.
that's confusing. do you have both py v2 & v3 'pip' in your env, and perhaps pip is v2?

@achillesrasquinha
Copy link
Owner

@pgnd the above solution seems limited to just pyenv environments.

@pgnd
Copy link
Author

pgnd commented Mar 20, 2020

ah, messy then ...

@achillesrasquinha
Copy link
Owner

achillesrasquinha commented Mar 20, 2020

However, I'll consider symlinks in this case. :)

@pgnd
Copy link
Author

pgnd commented Mar 20, 2020

'do that voodoo that you do' !

@achillesrasquinha
Copy link
Owner

Pending for release!

@achillesrasquinha
Copy link
Owner

@pgnd please update to 1.7.0 with pipupgrade --self and let me know if this fixes for you.

@pgnd
Copy link
Author

pgnd commented Mar 22, 2020

@achillesrasquinha

incurrent pyenv

python -V
	Python 3.8.2+

self-upgrade fails

pipupgrade --self
	Traceback (most recent call last):
	  File "/usr/local/pyenv/versions/3.8-dev/bin/pipupgrade", line 8, in <module>
	    sys.exit(main())
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/cli/__init__.py", line 15, in wrapper
	    return fn(**params)
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 71, in command
	    logger.info("Environment: %s" % environment())
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/config.py", line 108, in environment
	    environ["pip_executables"]  = [dict(
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/config.py", line 110, in <listcomp>
	    version    = _pip.call("--version", pip_exec = executable,
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/_pip.py", line 74, in call
	    output = popen(*params, output = output, raise_err = raise_err)
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/util/system.py", line 79, in popen
	    raise PopenError(code, command)
	pipupgrade.exception.PopenError: Command '/usr/local/pyenv/shims/pip2 --version' returned non-zero exit status 127.

looking in src

grep -rlni pip2 .
	./_pip.py
	./__pycache__/_pip.cpython-38.pyc
	./commands/__pycache__/helper.cpython-38.pyc

grep pip2 `grep -rlni pip2 .`
	./_pip.py:    pips  = ("pip", "pip3", "pip2")
                                           ^^^^
pyenv which pip
	/usr/local/pyenv/versions/3.8-dev/bin/pip

pyenv which pip3
	/usr/local/pyenv/versions/3.8-dev/bin/pip3

pyenv which pip2
	pyenv: pip2: command not found
	
	The `pip2' command exists in these Python versions:
	  2.7.17
	
	Note: See 'pyenv help global' for tips on allowing both
	      python2 and python3 to be found.

that's a different env, and when in THIS env, should be left alone

trying instead with a pip upgrade of pipupgrade

pip install --upgrade pipupgrade
	Collecting pipupgrade
	  Downloading pipupgrade-1.7.0-py3-none-any.whl (37 kB)
	Installing collected packages: pipupgrade
	  Attempting uninstall: pipupgrade
	    Found existing installation: pipupgrade 1.6.8
	    Uninstalling pipupgrade-1.6.8:
	      Successfully uninstalled pipupgrade-1.6.8
	Successfully installed pipupgrade-1.7.0

pyenv which pipupgrade
	/usr/local/pyenv/versions/3.8-dev/bin/pipupgrade

pipupgrade -v
	1.7.0

pipupgrade --check
	Traceback (most recent call last):
	  File "/usr/local/pyenv/versions/3.8-dev/bin/pipupgrade", line 8, in <module>
	    sys.exit(main())
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/cli/__init__.py", line 15, in wrapper
	    return fn(**params)
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/commands/__init__.py", line 72, in command
	    logger.info("Environment: %s" % environment())
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/config.py", line 109, in environment
	    environ["pip_executables"]  = [dict(
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/config.py", line 111, in <listcomp>
	    version    = _pip.call("--version", pip_exec = executable,
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/_pip.py", line 75, in call
	    output = popen(*params, output = output, raise_err = raise_err)
	  File "/usr/local/pyenv/versions/3.8-dev/lib/python3.8/site-packages/pipupgrade/util/system.py", line 78, in popen
	    raise PopenError(code, command)
	pipupgrade.exception.PopenError: Command '/usr/local/pyenv/shims/pip2 --version' returned non-zero exit status 127.

@pgnd
Copy link
Author

pgnd commented Mar 22, 2020

hm, with two supposedly separate pyenv

pyenv versions
	  2.7.17
	* 3.8-dev (set by /usr/local/pyenv/version)
python -V
	Python 3.8.2+
pyenv which pip3; pyenv which pip; pyenv which pip2
	/usr/local/pyenv/versions/3.8-dev/bin/pip3
	/usr/local/pyenv/versions/3.8-dev/bin/pip
	pyenv: pip2: command not found

	The `pip2' command exists in these Python versions:
	  2.7.17

	Note: See 'pyenv help global' for tips on allowing both
	      python2 and python3 to be found.


pyenv global 2.7.17
pyenv versions
	* 2.7.17 (set by /usr/local/pyenv/version)
	  3.8-dev
python -V
	Python 2.7.17
pyenv which pip3; pyenv which pip; pyenv which pip2
	pyenv: pip3: command not found

	The `pip3' command exists in these Python versions:
	  3.8-dev

	Note: See 'pyenv help global' for tips on allowing both
	      python2 and python3 to be found.
	/usr/local/pyenv/versions/2.7.17/bin/pip
	/usr/local/pyenv/versions/2.7.17/bin/pip2

where

ls -ald /usr/local/pyenv/shims/pip*
	-rwxr-xr-x 1 root root 398 Mar 20 20:45 /usr/local/pyenv/shims/pip*
	-rwxr-xr-x 1 root root 398 Mar 20 21:04 /usr/local/pyenv/shims/pip2*
	-rwxr-xr-x 1 root root 398 Mar 20 21:04 /usr/local/pyenv/shims/pip2.7*
	-rwxr-xr-x 1 root root 398 Mar 20 20:45 /usr/local/pyenv/shims/pip3*
	-rwxr-xr-x 1 root root 398 Mar 20 20:45 /usr/local/pyenv/shims/pip3.8*
	-rwxr-xr-x 1 root root 398 Mar 20 20:49 /usr/local/pyenv/shims/pipupgrade*

part of the confusion, i think, arises from

which pip
	/usr/local/pyenv/shims/pip
pyenv which pip
	/usr/local/pyenv/versions/3.8-dev/bin/pip

@achillesrasquinha achillesrasquinha added enhancement New feature or request help wanted Extra attention is needed and removed Pending for Release bug Something isn't working labels Jan 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants