Python 如何在mac上使用pipenv?

Python 如何在mac上使用pipenv?,python,macos,zsh,pipenv,pipenv-install,Python,Macos,Zsh,Pipenv,Pipenv Install,当通过pip安装它时(pip install pipenv),在zsh shell上找不到命令pipenv 如果通过brew:brew安装pipenv,然后运行pipenv shell,则出现错误 Loading .env environment variables... Launching subshell in virtual environment... Traceback (most recent call last): File "/usr/local/Cellar/pi

当通过pip安装它时(
pip install pipenv
),在zsh shell上找不到命令
pipenv

如果通过
brew
brew安装pipenv
,然后运行
pipenv shell
,则出现错误

Loading .env environment variables...
Launching subshell in virtual environment...
Traceback (most recent call last):
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/bin/pipenv", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/cli/command.py", line 429, in shell
    do_shell(
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 2387, in do_shell
    shell.fork_compat(*fork_args)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/shells.py", line 106, in fork_compat
    c = pexpect.spawn(self.cmd, ["-i"], dimensions=(dims.lines, dims.columns))
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/pexpect/pty_spawn.py", line 205, in __init__
    self._spawn(command, args, preexec_fn, dimensions)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/pexpect/pty_spawn.py", line 276, in _spawn
    raise ExceptionPexpect('The command was not found or was not ' +
pipenv.vendor.pexpect.exceptions.ExceptionPexpect: The command was not found or was not executable: /use/bin/zsh.

你问了两个问题,真的。我将在下面单独的一节中回答每个问题:

如何修复该错误 看起来,您有
PIPENV_SHELL=/use/bin/zsh
。那是不对的。相反,它应该是

PIPENV_SHELL=/bin/zsh
或者干脆

PIPENV_SHELL=zsh
或者,您也可以将其删除。然后,
pipenv shell
将使用与您从中调用它相同的shell

如何在macOS上正确安装
pipenv
在macOS上安装
pipenv
的正确方法有点复杂,但如果您不想在升级Python版本时遇到问题,这是唯一的方法:

  • 撤消您迄今为止所做的操作:
    %pip卸载pipenv
    %brew卸载pipenv
    
  • 将以下内容添加到您的
    .zprofile
    文件中:
    eval“$(brew shellenv)”
    export PYENV_VERSION=3.9.5#设置首选的Python版本。
    导出PYENV_ROOT=~/.PYENV
    导出PIPX\u BIN\u DIR=~/.local/BIN
    导出-U路径路径#-U消除重复项
    路径=(
    $PIPX_BIN_DIR
    $PYENV_ROOT/{bin,垫片}
    $path
    )
    
  • 打开一个新的终端窗口(使上述更改生效),然后执行以下操作:
    %brew安装pyenv
    %pyenv安装$pyenv#版本#安装您喜欢的Python。
    %pyenv global$pyenv#u版本#将其作为默认Python。
    %pip安装-U pip#更新pip。
    %pip安装-U——用户pipx#将pipx安装到~/.local/bin中
    %pipx安装pipenv#pipx类似于brew,但适用于Python。
    
  • 将以下内容添加到
    .zshrc
    文件中:
    eval“$(pyenv init-”
    评估“$(pip完成——zsh)”
    eval“$(注册python argcomplete pipx)”
    评估“$(pipenv——完成)”
    
  • 重新启动shell(通过键入
    exec zsh
    或打开一个新的终端窗口)使上述命令生效

  • 你确定它说/use,带e,而不是/usr,带r吗/usr/bin/zsh是查找zsh的一个比较合理的地方(但显然不是在Mac上),但是/use/bin/zsh简直是疯了。@TurePålson是的,我添加了完整的错误消息。@Miantian:所以一些脚本中显然有打字错误。搜索写入
    /use/bin/
    的位置,并使用文本编辑器修复此问题。@user1934428当我运行
    ls/use/bin/
    时,得到了
    “/use/bin/”:没有这样的文件或目录(操作系统错误2)
    。当然没有这个目录。你期待什么???
    echo $SHELL
    /bin/zsh
    
    Loading .env environment variables...
    ...
    The command was not found or was not executable: /use/bin/zsh.