pyenv: python: 找不到命令

asa*_*mtr 51 python pyenv

我想将 Python3 与 pyenv 一起使用。

$ pyenv root
/Users/asari/.pyenv
$ pyenv versions
  system
  2.7.15
  3.6.2
  3.6.3
  3.6.4
* 3.6.6 (set by /Users/asari/workspace/hoge/.python-version)
$ python -V
pyenv: python: command not found

The `python' command exists in these Python versions:
  2.7.15
Run Code Online (Sandbox Code Playgroud)

但是,找不到 python 命令。

我读了一下.pyenv/shims/python,以为里面没有python .pyenv/versions/3.6.6/bin/,但不知道为什么缺少python。

$ pwd
/Users/asari/.pyenv/versions/3.6.6/bin
$ ls -la
total 12096
drwxr-xr-x  19 asari  staff      608  8 16 00:51 .
drwxr-xr-x   6 asari  staff      192  8 16 00:51 ..
lrwxr-xr-x   1 asari  staff        8  8 16 00:51 2to3 -> 2to3-3.6
-rwxr-xr-x   1 asari  staff      135  8 16 00:51 2to3-3.6
-rwxr-xr-x   1 asari  staff      276  8 16 00:51 easy_install-3.6
lrwxr-xr-x   1 asari  staff        7  8 16 00:51 idle3 -> idle3.6
-rwxr-xr-x   1 asari  staff      133  8 16 00:51 idle3.6
-rwxr-xr-x   1 asari  staff      258  8 16 00:51 pip3
-rwxr-xr-x   1 asari  staff      258  8 16 00:51 pip3.6
lrwxr-xr-x   1 asari  staff        8  8 16 00:51 pydoc3 -> pydoc3.6
-rwxr-xr-x   1 asari  staff      118  8 16 00:51 pydoc3.6
lrwxr-xr-x   1 asari  staff        9  8 16 00:51 python3 -> python3.6
lrwxr-xr-x   1 asari  staff       16  8 16 00:51 python3-config -> python3.6-config
-rwxr-xr-x   2 asari  staff  3078944  8 16 00:51 python3.6
lrwxr-xr-x   1 asari  staff       17  8 16 00:51 python3.6-config -> python3.6m-config
-rwxr-xr-x   2 asari  staff  3078944  8 16 00:51 python3.6m
-rwxr-xr-x   1 asari  staff     2076  8 16 00:51 python3.6m-config
lrwxr-xr-x   1 asari  staff       10  8 16 00:51 pyvenv -> pyvenv-3.6
-rwxr-xr-x   1 asari  staff      475  8 16 00:51 pyvenv-3.6
Run Code Online (Sandbox Code Playgroud)

$路径

$ echo $PATH | perl -p -e 's/:/\n/g'
/Users/asari/.pyenv/shims
/Users/asari/.pyenv/bin
/Users/asari/.rbenv/shims
/Users/asari/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)

安装日志

$ echo $PATH | perl -p -e 's/:/\n/g'
/Users/asari/.pyenv/shims
/Users/asari/.pyenv/bin
/Users/asari/.rbenv/shims
/Users/asari/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)
$ pyenv install 3.6.6
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.6.tar.xz...
-> https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
Installing Python-3.6.6...
python-build: use readline from homebrew
Installed Python-3.6.6 to /Users/asari/.pyenv/versions/3.6.6
Run Code Online (Sandbox Code Playgroud)

pyenv克隆并从github安装(我还没有在brew上安装pyenv)

.zshrc

# python
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
Run Code Online (Sandbox Code Playgroud)

感谢您的时间。

更新

我创建了python的符号链接,并且 python 工作了。

为什么没有pythons 符号链接?(我想知道安装是否失败,我运行安装和卸载很多次

创建符号链接

$ pwd
/Users/asari/.pyenv/versions/3.6.6/bin
$ ln -s python3 python
Run Code Online (Sandbox Code Playgroud)

工作,

$ pwd
/Users/asari/workspace/hoge
$ python -V
Python 3.6.6
Run Code Online (Sandbox Code Playgroud)

4lk*_*r43 37

添加到~/.bashrc

alias python="$(pyenv which python)"
alias pip="$(pyenv which pip)"
Run Code Online (Sandbox Code Playgroud)

  • 使用此类别名可能会导致不可预见的问题。例如,当您运行“pipenv shell”时,它将防止虚拟环境被错误激活。相反,只需确保“python”和“pip”的垫片位于您的路径中 - 通过确保“eval "$(pyenv init --path)"”在您的“.bash_profile”或“.zprofile”中执行。 (13认同)
  • 这确实是有问题的。@arno_v 的答案 - 基本上阅读文档 - 应该是被接受和投票最多的答案! (2认同)

zan*_*ngw 23

Mac 操作系统下10.15

我们将以下内容添加到.bashrc文件或.zshrc文件中

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
Run Code Online (Sandbox Code Playgroud)


arn*_*o_v 17

对我来说,我的文件中的配置.zshrc.local需要更新。使用有关为 Pyenv 配置 shell 环境页面的信息,我将 pyenv init 内容更改为:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

eval "$(pyenv init --path)"
eval "$(pyenv init -)"

# Optionally (when you use pyenv virtualenv)
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)


Pha*_* Ky 8

在 MAC 操作系统上。我通过添加以下行来解决它~/.bash_profile

在终端呼叫vi ~/.bash_profile

在下面插入 2 行

alias python="$(pyenv which python)"
alias pip="$(pyenv which pip)"
Run Code Online (Sandbox Code Playgroud)

保存上述文件后调用此命令source ~/.bash_profile


Cod*_*ess 7

添加以下 2 行到 ./zshrc 就是答案,因为你已经有了 eval "$(pyenv init -)"

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
Run Code Online (Sandbox Code Playgroud)

技巧是让垫片发挥其应有的作用。


cmc*_*nty 7

在 MacOS Montery 12.5 上python/usr/local/bin/. 一个快速解决方法是确保这是指向系统的默认引用python3

ln -s python3 /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)


djv*_*jvg 5

就我而言,垫片已正确初始化:

$ which python
/home/me/.pyenv/shims/python
Run Code Online (Sandbox Code Playgroud)

然而,与理查德·多明戈的回答类似,我看到:

$ pyenv which python
pyenv: python: command not found

The `python' command exists in these Python versions:
  3.8.13

Note: See 'pyenv help global' for tips on allowing both
      python2 and python3 to be found.
Run Code Online (Sandbox Code Playgroud)

这里的问题是活动的 python 版本是system,并且我的系统python3没有python别名(符号链接)。

解决此问题的两个选项:

文档中的以下部分确实值得阅读:了解 Python 版本选择


asa*_*mtr 0

我解决了。

我在中使用了以下 grep 选项.zshrc

export GREP_OPTIONS = '- color = auto'
Run Code Online (Sandbox Code Playgroud)

看来,即使 ANSI 转义码包含在 中使用的 grep 的搜索结果中pyenv,它也没有被正确地用作字符串。

我想你们都知道,但GREP_OPTIONS已被弃用。