首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pipenv + pyenv + jupyter

pipenv + pyenv + jupyter
EN

Stack Overflow用户
提问于 2018-05-04 20:17:18
回答 1查看 3.2K关注 0票数 4

我使用pyenv为我的系统上的各种项目安装和管理不同版本的python和虚拟环境。但是pipenv现在是管理虚拟环境的推荐工具,我喜欢它的许多特性。在大多数情况下,一切都正常,但是pipenv在木星笔记本上似乎有漏洞或什么东西。下面是在我的机器上复制这个问题的步骤。

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

如果我尝试在pipenv虚拟环境中导入辅助包,但在木星笔记本之外(在repl或Python中),我将得到一个预期的ModuleNotFoundError。所以问题就出在朱皮特身上。注意,如果我尝试使用pyenv虚拟环境而不是pipenv虚拟环境重新创建这个问题,那么就会发生预期的行为:jupyter notebook在控制台中生成一个jupyter: command not found错误。

我的问题是:我是以一种非故意的方式使用pipenv,还是有另一种使用pipenv的方法可以避免这个问题?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-04 21:19:29

问题

在步骤1中,使用brew安装pipenv。pipenv的brew安装还安装了一个可直接使用的python环境。命令本身就在您的路径上,因此您可以独立于加载的虚拟环境调用它。

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

当您运行pipenv时,在步骤4中,它将使用它自己的python,因此它能够加载自己。然后,在步骤5中加载pipenv虚拟器,然后将用于该文件的bin文件夹添加到您的路径中,从而允许您运行所安装的东西。它不会撤销pyenv所做的更改。当您在步骤6中运行pip时,它会在这个pipenv中运行,从而打印出已安装的包的有限列表。

在步骤7中,您运行jupyter。这不是在pipenv虚拟器中,但是它在pyenv中。pyenv路径添加仍然存在,因此它是可运行的。jupyter命令是一个bash脚本,在运行之前它可以神奇地重置python路径。这就是如何在步骤8中找到requests模块的方法。

您终于运行了某种形式的python。这大概是在您的pipenv虚拟环境中,所以在该环境中的是加载模块。

解决方案

您需要卸载全局pyenv。由于您已经在3.6.3 python安装中安装了包,所以我也会清除您安装的任何虚拟版本和python版本。你可以重新安装它们。

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

您应该将jupyter安装到中,然后应该有一个只有在加载时才能工作的安装。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50182498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档