python-3.x - Python 3.8:从基本目录的 Jupyter Notebook 运行不同的 Python 环境时出错
问题描述
我最近不得不重新格式化我的工作计算机,并重新安装 Anaconda。我通常保持 Anaconda 的根(base)
文件夹不变,并在我需要使用专业 Python 模块而不是弄乱环境时创建单独的(base)
环境。
过去,我能够从安装在环境中的 Jupyter Notebook 成功运行这些不同的(base)
环境。我会通过ipykernel
在新环境中安装(例如my-env
)来实现,然后运行以下命令:
(base) activate my-env
(my-env) conda install ipykernel
(my-env) python -m ipykernel install --name "my-env" --display-name "My Python"
这将成功完成,并给我以下消息:
Installed kernelspec my-env in C:\ProgramData\jupyter\kernels\my-env
但是,当我尝试使用标准命令测试 Jupyter Notebook 中的链接时import matplotlib.pyplot as plt
,我收到以下错误消息:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-a0d2faabd9e9> in <module>
----> 1 import matplotlib.pyplot as plt
C:\Anaconda3\envs\my-env\lib\site-packages\matplotlib\__init__.py in <module>
105 # cbook must import matplotlib only within function
106 # definitions, so it is safe to import from it here.
--> 107 from . import cbook, rcsetup
108 from matplotlib.cbook import MatplotlibDeprecationWarning, sanitize_sequence
109 from matplotlib.cbook import mplDeprecation # deprecated
C:\Anaconda3\envs\my-env\lib\site-packages\matplotlib\cbook\__init__.py in <module>
26 import weakref
27
---> 28 import numpy as np
29
30 import matplotlib
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\__init__.py in <module>
141 from .core import *
142 from . import compat
--> 143 from . import lib
144 # NOTE: to be revisited following future namespace cleanup.
145 # See gh-14454 and gh-15672 for discussion.
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\lib\__init__.py in <module>
23 # Private submodules
24 from .type_check import *
---> 25 from .index_tricks import *
26 from .function_base import *
27 from .nanfunctions import *
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\lib\index_tricks.py in <module>
9 from numpy.core.numerictypes import find_common_type, issubdtype
10
---> 11 import numpy.matrixlib as matrixlib
12 from .function_base import diff
13 from numpy.core.multiarray import ravel_multi_index, unravel_index
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\matrixlib\__init__.py in <module>
2
3 """
----> 4 from .defmatrix import *
5
6 __all__ = defmatrix.__all__
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\matrixlib\defmatrix.py in <module>
9 # While not in __all__, matrix_power used to be defined here, so we import
10 # it for backward compatibility.
---> 11 from numpy.linalg import matrix_power
12
13
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\linalg\__init__.py in <module>
71 """
72 # To get sub-modules
---> 73 from .linalg import *
74
75 from numpy._pytesttester import PytestTester
C:\Anaconda3\envs\my-env\lib\site-packages\numpy\linalg\linalg.py in <module>
31 from numpy.core import overrides
32 from numpy.lib.twodim_base import triu, eye
---> 33 from numpy.linalg import lapack_lite, _umath_linalg
34
35
ImportError: DLL load failed: The specified module could not be found.
有人可以告诉我可能是什么问题吗?如果有帮助,我的(base)
环境有python
3.8.3notebook
版本和 6.0.3 版本,而我的新my-env
环境有从 conda-forge 下载的模块。它有一个python
版本 3.7.8 和一个ipykernel
版本 5.3.4。
提前致谢!
更新 2020 年 10 月 26 日
根据要求,我已经包含了我在(base)
环境和(my-env)
环境中拥有的模块列表。一般来说,模块中的包(base)
一直在更新anaconda
,而模块中的包(my-env)
相对于hyperspy
存储在conda-forge
存储库中的 保持最新。
我为他们创建了 PasteBin 条目,因为它们超出了这篇文章的字符数限制。
matplotlib
例如,我还尝试导入and以外的模块numpy
,并且能够导入abc
并且time
没有问题。这似乎是Jupyter Notebook 版本与环境中找到的(base)
不兼容的问题。numpy
(my-env)
解决方案
错误消息表明错误是由numpy库引起的。您的 (base) 和 (my-env) 之间的 Python 和 Ipkernel 版本不同的事实进一步表明您的环境之间存在不兼容性。
你能提供来自的输出吗
康达清单
从每个环境?
当我尝试创建 Python=3.8.3 环境时,安装的 numpy 版本是 numpy-1.19.2-py38hf89b668_1
我使用了命令
conda create -n foo -c conda-forge python=3.8.3 numpy
当我尝试创建 Python=3.7.8 环境时,安装的 numpy 版本是 numpy-1.19.2-py37h7008fea_1 我使用了命令
conda create -n foo -c conda-forge python=3.7.8 numpy
另外,为什么不考虑在每个环境中安装与各自版本的 Python 一致的 ipkernel/jupyter notebook 库呢?这始终是确保依赖关系正确对齐的最佳解决方案。
我还尝试在没有指定版本号的情况下将 ipykernel 与ipykernel一起安装在 python=3.8.3 和 python=3.7.8 中。
以下是 conda 自动选择的 ipykernel 版本: for
python =
3.8.3: ipykernel-5.3.4 | py38h1cdfbd6_1
对于 python=3.7.8:ipykernel-5.3.4 | py37hc6149b9_1
从你写的你的ipykernel版本是不同的。我确实认为这种差异很可能来自ipykernel版本的这些差异
检查环境时,请验证ipykernel的通道源是否相同。
一种解决方案:考虑将(基础)中的 ipykernel 降级到 5.3.4 版本。
推荐阅读
- c - 为 Windows x64 构建 openSSL
- javascript - 对 JS 中 Firebase 重新编写的所有 numChildren 求和
- xml - 如何将属性附加到 XSL 中的当前值?
- c# - 无法 AOT 程序集 - 在 Windows 上使用 MSBUILD 构建 Xamarin Android 项目时
- python - 如何检测一个简单但半透明的形状的存在?
- java - Maven 找不到要运行的 JUnit 测试
- c# - 多个线渲染器,每个渲染器跟随不同的对象
- java - 类 RowBreaker 中的方法 getSums 不能应用于给定类型
- firefox - 如何限制 SecurityInfo。每个 URL 命中每个根域仅出现一次
- spring-boot - 如何将缓冲图像上传到谷歌云存储?