- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 pyenv 为我系统上的各种项目安装和管理不同版本的 python 和虚拟环境。但是 pipenv 是现在推荐的管理虚拟环境的工具,我喜欢它的很多功能。大多数情况下一切正常,但是当涉及到 Jupyter notebook 时,pipenv 似乎有漏洞或其他问题。以下是在我的机器上复制问题的步骤。
brew install pipenv
安装 pipenv。pyenv install 3.6.3
安装新版本的 Python,并通过 pyenv global 3.6.3
激活它。pip 安装 jupyter 请求
。pipenv install
pipenv shell
激活 pipenv 虚拟环境。pip list
确认当前 virtualenv 中没有安装任何包。 (我只有 pip
、setuptools
和 wheel
。)jupyter notebook
。我的期望是:控制台出错并显示 jupyter: command not found
。实际:笔记本服务器和浏览器 UI 正常启动。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 安装很好,可以保留。它也是您应该使用的主要工具。您不需要直接执行 pip
或 pyenv
。
您应该将 jupyter 安装到 pipenv virtualenv 中,然后您应该有一个仅在加载 pipenv virtualenv 时才有效的安装。
关于python - pipenv + pyenv + jupyter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182498/
我主要使用笔记本,所以在命令行上,我通常只想为我拥有的特定 python 版本安装特定的包。目前,我通常会更改全局python版本,运行pip并将全局版本改回。有没有办法在特定的 pyenv 中执行单
我不知道如何正确设置 pyenv 来切换 python 版本。 实际上,我必须在 SUSE LINUX ENTERPRISE SERVER 10 SP3 上切换/尝试更新的 python 版本(我知道
这让我很困惑,我不知道这是什么意思。我的计算机 (MacOS) 上安装了 3.6.4,但它无法运行。 我想不出任何解决办法,也不知道该怎么办。 最佳答案 无论您是在 Mac 还是 Linux 上,答案
我通过 pyenv 安装了 3.8.2,但我想在本地机器上升级到 3.8.3,以匹配我们在生产中使用的版本。 $ pyenv install 3.8.3 python-build: definit
我正在使用 Ubuntu 16.4 我安装了 pyvenv 和 pyenv 的依赖项, 经过 su sudo apt-get install -y make build-essential libs
TLDR 我无法使用 pyenv-win 安装 3.6.10,只能安装 3.6.8 ref . 虽然我无法使用pyenv global让它成为全局python版本ref 详细信息 我按照指导安装了 p
TLDR 我无法使用 pyenv-win 安装 3.6.10,只能安装 3.6.8 ref . 虽然我无法使用pyenv global让它成为全局python版本ref 详细信息 我按照指导安装了 p
尝试根据指南安装 pyenv-win 模块:https://github.com/pyenv-win/pyenv-win/blob/master/README.md 但我是 Windows 中的命令提
我已经使用 pyenv 将近两年了,在 X11 模式下运行 RHEL 8.3(Linux 内核 4.18)和 Gnome 3.32.2 的系统上没有任何问题。我主要使用 fish shell ,但偶尔
我在一个漫长而复杂的管道中使用snakemake,它涉及一些外部编写的python2脚本。当我尝试使用 pyenv 指定 python2 时,pyenv shell命令失败,而 pyenv globa
问题: 我在 Windows 10 计算机上使用 python 2.7。 当我运行时 pip install pyenv 我收到如下所示的错误。 这是我遇到的唯一一个无法成功安装的 pip 模块。我不
我在我的环境中安装了 pyenv,直到本周末(当我安装“Kivy”时)我的 pyenv/本地设置一直运行良好。但是现在当我转到我的各种 python 项目目录时,pyenv 不会自动正确激活正确的 p
如何与其他用户一起使用pyenv? 例如,如果我在用户测试环境中安装了 pyenv,我可以在以测试身份登录时使用 pyenv。 但是,当我以其他用户(例如 root)登录时,如何使用 pyenv? 最
我正在使用 pyenv 和 virtualenvwrapper。 为了使用 virtualenvwrapper(没有 pyenv),我在我的 .bash_profile source/usr/loca
我已经安装了 pyenv,但是它没有执行最基本的功能,即切换 Python 版本。以下终端命令演示了这一点。 the file `main.py` is equivalent to: import s
我正在关注 tutorial在 ubuntu 20.04 上设置火炬时,一行需要设置 pyenv这就像 python 的 virtualenv,所以我可以运行多个版本的 python。有点不必要,但这
我用 pyenv virtualenv 3.5.9 projectname 创建了一个虚拟环境用于开发 Django 项目。 如何为我的代码设置环境变量以供使用? 我试图在 /Users/develo
我有一个 shell 服务器,由从事自己项目的研究人员占用,他们拥有自己所需的 python 版本和 python 库。虽然有很多重叠,特别是在所需的 python 版本中,我发现我们在主目录中浪费了
我在我的终端看到这个: gyp ERR! stack pyenv: python2: command not found gyp ERR! stack gyp ERR! stack The `pyth
如何使用 .file 指定 pyenv-virtual env,以便当我 cd 到目录时,我会自动获得正确的 pyenv 并选择正确的 virtualenv。 最佳答案 Pyenv 环境可以使用 .p
我是一名优秀的程序员,十分优秀!