python - 仍然找到安装了 pyenv 的系统 python - 安装模块

标签 python python-3.x module pyenv

在 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环境有自己的模块和版本?

最佳答案

让我再试一次:

问题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?

据我了解,你想更广泛地说的是:“我如何使用 pip 二进制文件安装包,相对于我用 安装的 Python 版本pyenv?”。

答案应该是:pyenv 应该会处理它。如果没有,你应该做一个额外的步骤。请记住,我假设你已经安装了 pyenvhomebrew

1。如何check if pyenv 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),则需要一个额外的步骤。

2。使用 homebrew

安装后设置 pyenv 的附加步骤

在您的终端模拟器中运行以下命令:

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

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

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

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

运行以下命令以在终端中为 pyenv 命令启用制表符补全。

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

4。 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 的实际工作将在引擎盖下进行。

一个例子

我安装了 Python 3.9.5pyenv 并将其设置为全局版本,然后用它来安装 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用的最多,然后有人用pyenv-virtualenv或者Python官方提供的其他(应该是pipenv。我一直用conda,但它不提供任何官方的自动完成功能,有时很烦人。还有其他选择,例如 mamba - 但从未使用过。

关于python - 仍然找到安装了 pyenv 的系统 python - 安装模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62993586/

相关文章:

python - 如何从python中的字符串中查找连续的子字符串

Python从文件中读取以使用networkx创建加权有向图

python - 为什么当我执行 'log' 时,我的 matplotlib 条形图会压缩 x 轴

python - 使用 xml.dom.minidom 从 Mysql XML 转储中提取数据

python-3.x - 在docker文件中使用特定的none-python基本图像设置特定的python版本

python - 如何在 Python 中的子包/模块的命名空间中获取父模块/包函数?

Python Datetime - 如何只获取打印时间而不获取日期?如何配置它以确保它只打印我想要的内容?

python如何在模块中注册动态类

python - 如何训练用于无人机姿态估计的自定义关键点检测器。检测器2

python - Django——预填充隐藏字段