仍在查找安装了pyenv并安装了模块的系统python

2024-04-29 15:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在当前的操作系统Mac上,系统python仍然是2.7。我已经安装了pyenv,并成功安装了3.7.3

dandonaldson@Dans-MacBook-Pro-2 gpt-2 % pyenv local
3.7.3
dandonaldson@Dans-MacBook-Pro-2 gpt-2 % pyenv global
3.7.3
dandonaldson@Dans-MacBook-Pro-2 gpt-2 % 

如果我现在尝试安装pipx,作为安装软件包的一种方式,我会

dandonaldson@Dans-MacBook-Pro-2 gpt-2 % pip install --user pipx 
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting pipx
  Using cached pipx-0.15.4.0.tar.gz (336 kB)
    ERROR: Command errored out with exit status 1:
     command: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/fz/hkppw37x1tz20d3jv8rb3vmr0000gn/T/pip-install-u0WjuX/pipx/setup.py'"'"'; __file__='"'"'/private/var/folders/fz/hkppw37x1tz20d3jv8rb3vmr0000gn/T/pip-install-u0WjuX/pipx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/fz/hkppw37x1tz20d3jv8rb3vmr0000gn/T/pip-pip-egg-info-bKDh7q
         cwd: /private/var/folders/fz/hkppw37x1tz20d3jv8rb3vmr0000gn/T/pip-install-u0WjuX/pipx/
    Complete output (1 lines):
    Python 3.6 or later is required. See https://github.com/pipxproject/pipx for installation instructions.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

我被告知不要在*/Frameworks中删除python,所以似乎我必须在保留它的同时解决这个问题

上一次使用brew拍摄给我留下了

    which python
    python: aliased to /usr/local/bin/python3.8

and when I try this I get

brew uninstall python
Error: Refusing to uninstall /usr/local/Cellar/python@3.8/3.8.4
because it is required by imagemagick, which is currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies python

所以

  • 我可以卸载brew python而不致于世界末日吗?我没有python项目
  • 如何让模块包默认安装在3.7.3可访问的位置

我已经使用rubyenv很多年了,它并没有这么糟糕…:(

额外要点:Python和pyenv是否具有允许Python环境拥有自己的模块和版本的相同行为


Tags: installpippyenvisvarprivatepipxpro
1条回答
网友
1楼 · 发布于 2024-04-29 15:57:54

让我再试一次:

问题1

  • can I uninstall the brew python without the world ending? I have no python projects

恐怕不行,因为imagemagick目前正在使用它,这意味着每个需要imagemagick的二进制文件都需要python3

问题2

  • how can I get module packages to install by default in a place accessible to 3.7.3?

据我所知,您试图更广泛地说的是:“相对于使用pyenv安装的Python版本,如何使用pip二进制文件安装软件包?”。

答案应该是:pyenv应该处理好它。如果没有,您应该执行另外一个步骤。请记住,我假设您已经安装了带有homebrewpyenv

一,。如何check if ^{} works

如果pyenv设置正确,则以下行将是命令echo $PATH的输出:

$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin

其中$(pyenv root)是pyenv所在的位置-大部分时间是~/.pyenv。但是您可以通过在~/.zshenv中设置PYENV_ROOT来更改它(我喜欢在~/.config/中设置这些内容,以清除我的~/目录中的混乱)

官方文件建议运行echo $PATH | grep color=auto "$(pyenv root)/shims"。如果没有输出或它是一个错误(例如,echo $?返回错误1),则需要另外一个步骤

二,。使用homebrew安装后设置pyenv的附加步骤

在终端仿真器中运行以下命令:

echo 'eval "$(pyenv init  path)"' >> ~/.zprofile

(或者,如果已经设置了ZDOTDIR环境变量,请运行echo 'eval "$(pyenv init path)"' >> $ZDOTDIR/.zprofile

然后重新启动shell。现在,你的道路应该看起来像你期望的那样

三,。启用pyenv命令自动完成的附加步骤

运行以下命令以在终端中为pyenv命令启用制表符完成

echo 'eval "$(pyenv init -)"' >> ~/.zshrc # or $ZDOTDIR/.zshrc

四,。pyenv有效吗

您可以通过查看$PATH变量再次检查:

$ echo $PATH | tr ":" "\\n" # to have it spit out in an orderly fashion
/usr/local/Caskroom/miniconda/base/condabin # don't mind this
/Users/luca/.local/bin # these are my custom scripts
/Users/luca/.pyenv/shims # this is what you are looking for!
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/Library/TeX/texbin
/opt/X11/bin

不要介意/usr/local/Caskroom/miniconda/base/condabin部分,我主要使用conda来管理Python环境

然后,如果您运行which/where pipwhich/where pip3以查看它在尝试安装软件包时实际使用的二进制文件,您应该看到:

$ where pip3
/Users/luca/.pyenv/shims/pip3 # that's pyenv
/usr/local/bin/pip3 # this is homebrew
/usr/bin/pip3 # this is the systems'

$ where pip
/Users/luca/.pyenv/shims/pip # that's pyenv

这表示当您使用pippip3执行命令时,将使用使用pyenv安装的二进制文件,并且Python的全局或本地版本将实际在后台工作

一个例子

我使用pyenv安装了Python 3.9.5,并将其设置为全局版本,然后使用它安装pandas

$ pip install pandas
Collecting pandas
  Using cached pandas-1.2.4-cp39-cp39-macosx_10_9_x86_64.whl (10.7 MB)
Collecting numpy>=1.16.5
  Downloading numpy-1.20.3-cp39-cp39-macosx_10_9_x86_64.whl (16.1 MB)
     |████████████████████████████████| 16.1 MB 1.8 MB/s
Collecting pytz>=2017.3
  Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting python-dateutil>=2.7.3
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, pytz, python-dateutil, numpy, pandas
Successfully installed numpy-1.20.3 pandas-1.2.4 python-dateutil-2.8.1 pytz-2021.1 six-1.16.0
WARNING: You are using pip version 21.1.1; however, version 21.1.2 is available.
You should consider upgrading via the '/Users/luca/.pyenv/versions/3.9.5/bin/python3.9 -m pip install  upgrade pip' command.

这似乎没有帮助,但请注意,在WARNING中,它表示/Users/luca/.pyenv/versions/3.9.5/bin/python3.9,这表明我确实在使用pyenv的Python

问题3

Extra points: does Python and pyenv have the same behaviour of allowing python environments to have their own modules and versions?

对!!可以使用多个环境选项conda是最常用的,然后有人使用{}或Python官方提供的其他工具(应该是{a2})。我一直使用{},但它不提供任何官方自动完成功能,有时很烦人。还有其他替代方法,例如{a3}-从未使用过它

相关问题 更多 >