带有 pipenv 的 Jupyter 中的 ModuleNotFoundError
ModuleNotFoundError in Jupyter with pipenv
这个周末我参加了 Python 新兵训练营,但由于这个问题,我什至无法在计算机上使用 Python。我所有的导师也都被难住了。
问题是我在 Jupyter 上得到了 ModuleNotFoundError
和多个不同的包,包括 Pandas 和请求(但奇怪的是,BeautifulSoup
和 CSV
工作正常.)
以下是我如何开始一个新的 Jupyter 文件:
- 新建目录
- 使用以下命令安装 jupyter 和 pandas:pipenv install jupyter pandas
- 激活虚拟环境:pipenv shell
- 启动 Jupyter:jupyter notebook
- 新建Python3个笔记本
- 此时,我尝试使用
import pandas as pd
之类的命令并取回 ModuleNotFoundError
。
我正在使用 Python 版本 3.6.5。
尝试解决此问题但失败:
- 使用 pip graph
仔细检查 pandas 是否安装在我的虚拟环境中
创建了全新的目录
pipenv install jupyter pandas --skip-lock
使用这些命令卸载了系统范围内的所有内容:
pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
- 已更新pandas
- 使用 virtualenv 而不是 pipenv
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd ..
pip install jupyter pandas
我测试了当我在命令 shell 中使用 python 时可以导入 pandas(是的)——在 Jupyter 上仍然不起作用。
我的导师认为问题是系统范围的包干扰了虚拟包,但我们已经工作了几个小时,无法弄清楚如何解决这个问题。
如有任何帮助,我们将不胜感激。由于我是初学者,请附上详细说明。
你为什么不尝试用 Anaconda 虚拟环境安装 ipykernel?
它会更容易处理。
如果你之前没有用过Anaconda,直接去官网看看
https://www.anaconda.com/download/ 并为您的 OS 下载最新版本。
然后,按照以下步骤操作。
- 执行 Anaconda 提示。
- 类型'conda create -y -n $ENVIRONMENT_NAME ipykernel'
- 输入'conda activate $ENVIRONMENT_NAME'
- 类型'conda install -y $PACKAGES_TO_BE_INSTALLED'
- 类型'python -m ipykernel install --user --name $NAME --display-name $IPYKERNEL_NAME'
此 ipykernel 名称将显示在您的 jupyter notebook 中的内核列表中。
您可以通过键入 jupyter kernelspec list
.
来查找已安装内核的列表
希望对您有所帮助!
感谢您的建议。但是,有人特别建议我不要安装 Anaconda——不太记得原因了,但我认为这是因为,基本上,如果我决定要使用其他东西,那么切换起来真的很头疼。如果您不同意,我很高兴听到您的推理。
我最终通过卸载虚拟环境和大型计算机系统中的所有软件包,然后在这两个地方重新安装来解决了这个问题。它有效,但我对虚拟环境的意义有点困惑,如果我仍然必须安装所有东西两次的话。
如果您在 jupyter 中获得 'ModuleNotFoundError: No module named xxyyzz',但是可以通过 pipenv shell 运行 python 导入模块(pipenv run python -c "import xxyyzz; print(xxyyzz.__version__)"
:
- 可能是 jupyter 的 python 路径在内核配置文件中设置不正确:
..\jupyter\kernels\<myProjectName>\kernel.json
- 需要在 pipenv 中创建内核 shell 以选择正确的路径
使用全新的 pipenv 安装:
pip install pipenv
cd <project directory>
export PIPENV_VENV_IN_PROJECT=1 # creates .venv in project directory
pipenv --python=/path/to/python --site-packages # use python executable for your system or environment
pipenv shell # work in project's virtual environment
python -m ipykernel install --user --name=<myProjectName> # create jupyter kernel for project
exit # exit project's virtual environment
pipenv run jupyter notebook # start jupyter from project directory
- 在jupyter中,选择内核"myProjectName"
this post provides additional explanations
这个周末我参加了 Python 新兵训练营,但由于这个问题,我什至无法在计算机上使用 Python。我所有的导师也都被难住了。
问题是我在 Jupyter 上得到了 ModuleNotFoundError
和多个不同的包,包括 Pandas 和请求(但奇怪的是,BeautifulSoup
和 CSV
工作正常.)
以下是我如何开始一个新的 Jupyter 文件:
- 新建目录
- 使用以下命令安装 jupyter 和 pandas:pipenv install jupyter pandas
- 激活虚拟环境:pipenv shell
- 启动 Jupyter:jupyter notebook
- 新建Python3个笔记本
- 此时,我尝试使用
import pandas as pd
之类的命令并取回ModuleNotFoundError
。
我正在使用 Python 版本 3.6.5。
尝试解决此问题但失败:
- 使用 pip graph 仔细检查 pandas 是否安装在我的虚拟环境中
创建了全新的目录
pipenv install jupyter pandas --skip-lock
使用这些命令卸载了系统范围内的所有内容:
pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
- 已更新pandas
- 使用 virtualenv 而不是 pipenv
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd ..
pip install jupyter pandas
我测试了当我在命令 shell 中使用 python 时可以导入 pandas(是的)——在 Jupyter 上仍然不起作用。
我的导师认为问题是系统范围的包干扰了虚拟包,但我们已经工作了几个小时,无法弄清楚如何解决这个问题。
如有任何帮助,我们将不胜感激。由于我是初学者,请附上详细说明。
你为什么不尝试用 Anaconda 虚拟环境安装 ipykernel? 它会更容易处理。
如果你之前没有用过Anaconda,直接去官网看看 https://www.anaconda.com/download/ 并为您的 OS 下载最新版本。 然后,按照以下步骤操作。
- 执行 Anaconda 提示。
- 类型'conda create -y -n $ENVIRONMENT_NAME ipykernel'
- 输入'conda activate $ENVIRONMENT_NAME'
- 类型'conda install -y $PACKAGES_TO_BE_INSTALLED'
- 类型'python -m ipykernel install --user --name $NAME --display-name $IPYKERNEL_NAME'
此 ipykernel 名称将显示在您的 jupyter notebook 中的内核列表中。
您可以通过键入 jupyter kernelspec list
.
希望对您有所帮助!
感谢您的建议。但是,有人特别建议我不要安装 Anaconda——不太记得原因了,但我认为这是因为,基本上,如果我决定要使用其他东西,那么切换起来真的很头疼。如果您不同意,我很高兴听到您的推理。
我最终通过卸载虚拟环境和大型计算机系统中的所有软件包,然后在这两个地方重新安装来解决了这个问题。它有效,但我对虚拟环境的意义有点困惑,如果我仍然必须安装所有东西两次的话。
如果您在 jupyter 中获得 'ModuleNotFoundError: No module named xxyyzz',但是可以通过 pipenv shell 运行 python 导入模块(pipenv run python -c "import xxyyzz; print(xxyyzz.__version__)"
:
- 可能是 jupyter 的 python 路径在内核配置文件中设置不正确:
..\jupyter\kernels\<myProjectName>\kernel.json
- 需要在 pipenv 中创建内核 shell 以选择正确的路径
使用全新的 pipenv 安装:
pip install pipenv
cd <project directory>
export PIPENV_VENV_IN_PROJECT=1 # creates .venv in project directory
pipenv --python=/path/to/python --site-packages # use python executable for your system or environment
pipenv shell # work in project's virtual environment
python -m ipykernel install --user --name=<myProjectName> # create jupyter kernel for project
exit # exit project's virtual environment
pipenv run jupyter notebook # start jupyter from project directory
- 在jupyter中,选择内核"myProjectName"
this post provides additional explanations