【问题标题】:zsh: commands not working for pip, conda, pythonzsh:命令不适用于 pip、conda、python
【发布时间】:2020-07-14 21:29:07
【问题描述】:

这是我的故事: 众所周知,macos 预装了 pyhton 2.7。几年前,我安装了 python 3.7.0 并且一切顺利。我开始使用 Tensorflow,在此期间 tensorflow 与 3.7.0 不兼容,所以以某种方式将版本切换到 3.6.6 :)。一段时间后,我安装了 anaconda 并安装了 3.7.3。 此时:

  • 当我打开我的 python IDLE shell 时,它在 3.6.6 上运行
  • anaconda Jupiter notebook 显示 3.7.3.

然后我学会了通过终端创建虚拟环境,并使用以下代码创建虚拟环境:

pip install virtualenv
virtualenv project_env

在我激活虚拟环境后,它显示的python版本是3.7.3。


然后最近我将终端 shell 更改为 zsh,现在一切都搞砸了。我是

  1. 终端找不到 conda 命令。如何解决?
  2. 现在我无法通过virtualenv project_env 创建虚拟环境。它说找不到命令。为什么?它用于使用 python 3.7.3 创建虚拟环境。
  3. 现在要创建虚拟环境,我使用python3 -m venv project_env 这将使用 python 3.6.6 创建虚拟环境。如果我使用 python3.7 -m venv project_env 它会使用 python 3.7.0 创建环境。
  4. 我找不到使用 python 3.7.3 创建虚拟环境的方法。

我需要帮助解决安装 zsh 后引起的上述问题,并帮助我在需要的地方访问 python 版本。如何将 python 版本 3.7.0 更新到最新或任何特定版本,如 3.7.3。如何使用 python 3.8.4,我的意思是我在 python 3.7.0 中导入 tensorflow 时遇到了麻烦。

我希望您能理解我的麻烦,并搜索了很多解决方案。我现在很困惑,甚至无法弄清楚我的问题的标题。

【问题讨论】:

  • 然后我学会了通过终端创建虚拟环境,并使用以下代码创建虚拟环境: 这样,您可能安装了 4 次以上的 Python,并且至少安装了 2 次包管理和虚拟环境的工具。减少您拥有的工具和安装数量可能是个好主意。
  • @HarmanThind :您是否以与 bash 启动文件并行的方式配置 zsh 启动文件(仅在需要时使用 zsh 语法)?
  • @user1934428 实际上我没有,只是在我安装 zsh 之前运行出现在 bash shell 上的命令。这些文件要配置吗? .zshenv、.zprofile、.zshrc、.zlogin、.zlogout。如何配置它们?
  • @HarmanThind :在zshall 手册页的INVOCATION 章节中。它描述了这些文件,以及处理它们的条件。从中您可以选择在其中放置您的定义。我不能告诉你,因为我不知道你是如何使用你的系统的细节,但是一旦你了解了 zsh 的启动方式,你就很容易做出决定。

标签: python python-3.x anaconda conda zsh


【解决方案1】:

基于您的 shell 现在找不到 conda 的事实,您应该查看您的“路径”环境变量。每当您从一个 shell 更改为另一个 shell 时,您都需要查看并可能创建或修改 shell 在启动时使用的文件。这些文件设置您的环境(PATH、PYTHONPATH 等)、创建别名等。您可能需要创建 .zshrc、.zprofile、.zlogin 等文件并添加与之前 shell 的启动文件相同的设置。

示例: 如果您以前使用过 bash shell,则需要修改 .zshrc 文件以将您的设置包含在 .bashrc 文件中。语法可能不同,因此直接复制可能有效,也可能无效。

尝试将此作为快速的临时修复(可能有效,也可能无效,具体取决于您当前的 ~/.profile 设置:

创建一个包含以下代码的 ~/.zprofile 文件:

emulate sh
. ~/.profile
emulate zsh

参考: https://superuser.com/questions/187639/zsh-not-hitting-profile http://zsh.sourceforge.net/Intro/intro_3.html

【讨论】:

  • 感谢唐纳德的回复。到目前为止,我只有配置 .bash_profile 文件的经验。 .bashrc 似乎是空的。我是否必须将 .bash_profile 设置复制到 zsh 启动文件?
  • 很好,你的 .bashrc 文件是空的,它使这更简单。我不认为直接复制是一个好主意。 zsh shell 与 bash shell 不同,许多命令都不同。如果在 zsh shell 中运行 bash 命令,可能会出错。您可以尝试使用 zsh “emulate” 命令作为解决方法,但最好将启动命令移动到与 shell 无关的 .profile,或者将命令一一转换为新的 shell 启动文件。我添加了一个可能的快速修复,您可以在上面的答案中尝试。
猜你喜欢
  • 2015-10-15
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多