gpt4 book ai didi

python - pipenv + pyenv + jupyter

转载 作者:行者123 更新时间:2023-11-28 17:07:20 29 4
gpt4 key购买 nike

我使用 pyenv 为我系统上的各种项目安装和管理不同版本的 python 和虚拟环境。但是 pipenv 是现在推荐的管理虚拟环境的工具,我喜欢它的很多功能。大多数情况下一切正常,但是当涉及到 Jupyter notebook 时,pipenv 似乎有漏洞或其他问题。以下是在我的机器上复制问题的步骤。

  1. 使用 brew install pipenv 安装 pipenv。
  2. 使用 pyenv install 3.6.3 安装新版本的 Python,并通过 pyenv global 3.6.3 激活它。
  3. 安装 Jupyter notebook 和另一个软件包,例如pip 安装 jupyter 请求
  4. 创建一个新目录并导航到其中;使用 pipenv install
  5. 创建一个 pipenv 项目
  6. 使用 pipenv shell 激活 pipenv 虚拟环境。
  7. 不要安装任何包,并使用 pip list 确认当前 virtualenv 中没有安装任何包。 (我只有 pipsetuptoolswheel。)
  8. 运行 jupyter notebook。我的期望是:控制台出错并显示 jupyter: command not found。实际:笔记本服务器和浏览器 UI 正常启动。
  9. 创建一个新笔记本并从第 3 步导入辅助包:import requests。我的期望:抛出 ModuleNotFoundError。实际:导入包,可以正常使用。

如果我尝试在 pipenv 虚拟环境中导入辅助包,但在 Jupyter notebook 之外(在 repl 或 Python 脚本中),我会按预期收到 ModuleNotFoundError。所以不知何故,问题出在 jupyter 上。请注意,如果我尝试使用 pyenv 虚拟环境而不是 pipenv 虚拟环境重现此问题,则会发生预期的行为:jupyter notebook 产生 jupyter: command not found 错误在控制台中。

My question is: am I using pipenv in a way that was not intended, or is there an alternative way to use pipenv that avoids this problem?

提前致谢!

最佳答案

问题

在第 1 步中,您使用 brew 安装了 pipenv。 pipenv 的 brew 安装也同时安装了 python 环境,直接使用。命令本身在您的路径上,因此您可以独立于您加载的 virtualenv 调用它。

在第 2 步中,您安装并加载了一个 pyenv virtualenv。加载 pyenv virtualenv 会改变你的路径。当你现在使用 pip 时,它是 pyenv 3.6.3 pip,它将安装到那个 pyenv 中。因此,当您在第 3 步中运行 pip install jupyter requests 时,它们会进入 pyenv virtualenv。

当您运行 pipenv 时,在第 4 步中,它将使用它自己的 python,因此它能够自行加载。您在第 5 步中加载的 pipenv virtualenv 然后将其 bin 文件夹添加到您的路径中,允许您运行您安装的东西。它不会撤消 pyenv 所做的更改。当您在第 6 步中运行 pip 时,它会在此 pipenv virtualenv 中运行,因此会打印已安装软件包的有限列表。

在第 7 步中,您运行 jupyter。这不在 pipenv virtualenv 中,而是在 pyenv 中。 pyenv 路径添加仍然存在,因此它是可运行的。 jupyter 命令是一个 bash 脚本,它可以在运行前重置 python 路径。这就是它如何在步骤 8 中找到 requests 模块。

您终于运行了某种形式的 python repl。这大概在您的 pipenv virtualenv 中,因此它加载了该环境中的模块。

解决方案

您需要卸载全局 pyenv。由于您已将软件包安装到 3.6.3 python 安装中,因此我还将清除您已安装的任何 virtualenvs 和 python 版本。您可以重新安装它们。

您的 pipenv 安装很好,可以保留。它也是您应该使用的主要工具。您不需要直接执行 pippyenv

您应该将 jupyter 安装到 pipenv virtualenv 中,然后您应该有一个仅在加载 pipenv virtualenv 时才有效的安装。

关于python - pipenv + pyenv + jupyter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182498/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com