【问题标题】:Import Error when using Anaconda with Python launcher将 Anaconda 与 Python 启动器一起使用时出现导入错误
【发布时间】:2021-01-26 19:26:06
【问题描述】:

我安装了 Anaconda(Anaconda3-2020.07-Windows-x86_64,python 3.8)。按照安装指南,我没有将 Anaconda 添加到 PATH 环境变量中。安装后使用Anaconda Prompt启动python时效果很好。

当我使用 Python Launcher 从 CMD 启动 python 时出现问题:

在 CMD 中,键入“py”以启动 python(Python 启动器能够找到 Anaconda python)。然后当我尝试导入numpy 时,出现以下错误:

Original error was: DLL load failed: The specified module could not be found.

当我尝试导入 sqlite3 时,出现以下错误:

ImportError: DLL load failed while importing _sqlite3: %1 is not a valid Win32 application

如果我使用 Anaconda Prompt 启动 python,我可以成功导入 numpysqlite3。我在这两种情况下检查了sys.path,它们完全一样。

为什么?这两种情况有什么区别?

附言

我担心这个问题,因为我使用“django + mod_wsgi + Apache”构建了一个网站,当从 brwoser 访问该网站时,该网站出现“内部服务器错误”。错误日志显示是由于导入numpy和sqlite3失败导致的,和上面的错误一样。

【问题讨论】:

  • 这是整个错误输出吗?
  • 不,我只是把整个输出的最后一行。我意识到这是由path 环境变量引起的问题,因为我没有将Anaconda 路径添加到path 变量,所以python 解释器找不到一些dll 文件。但是当我使用旧的Anaconda(Anaconda3-2019.03-Windows-x86_64,python 3.6)时,我没有遇到这个问题,尽管Anaconda路径也没有添加到path变量中。我昨天重新安装了最新的Anaconda,然后问题就出现了。
  • 但是当我使用旧的Anaconda(Anaconda3-2019.03-Windows-x86_64,python 3.6)时,我没有遇到这个问题,虽然Anaconda路径也没有添加到路径变量中. 那不是说明不是 路径环境变量引起的问题 吗?
  • 我在普通CMD中运行set path=C:\Anaconda3;C:\Anaconda3\Library\mingw-w64\bin;C:\Anaconda3\Library\usr\bin;C:\Anaconda3\Library\bin;C:\Anaconda3\Scripts;C:\Anaconda3\bin;C:\Anaconda3\condabin;%path%,然后运行py启动python。然后我可以导入 numpy 和 sqlite3。我认为这是路径问题。奇怪的是旧版本的 Anaconda 没有这个问题。我不知道为什么旧的 Andconda 可以找到那些 dll 文件。
  • 这可能会导致一些问题。您应该考虑删除 Anaconda/Conda 的所有痕迹,然后从头开始重新安装。

标签: python anaconda conda python-import


【解决方案1】:

这两种情况有什么区别?

anaconda 命令提示符为 PATH 环境变量添加了一堆路径,例如对我来说,它已经添加了所有这些位置:

C:\ProgramData\Miniconda3
C:\ProgramData\Miniconda3\Library\mingw-w64\bin
C:\ProgramData\Miniconda3\Library\usr\bin
C:\ProgramData\Miniconda3\Library\bin
C:\ProgramData\Miniconda3\Scripts
C:\ProgramData\Miniconda3\bin
C:\ProgramData\Miniconda3\condabin

在其中一些位置有像python.exe 这样的可执行文件,因此调用python 将启动安装了anaconda 的版本。此列表中的其他文件夹包含 .dll 文件,即您的模块可能依赖的库(如 numpy 或 sqlite,它们是用 c/c++ 编写的函数的接口)。因此,即使您调用了正确的 python.exe,如果 PATH 未设置为包含必要 dll 的位置,那么导入此类包也会失败,正如您在错误消息中看到的那样:

Original error was: DLL load failed: The specified module could not be found.

你可以做什么:

我不是配置 django 服务器方面的专家,但通过手动将这些位置添加到您的 PATH,您或许能够解决问题。

【讨论】:

  • 谢谢,很有帮助。我终于意识到这是path 变量的问题。奇怪的是,当我使用旧版本的 Anaconda(Anaconda3-2019.03-Windows-x86_64,python 3.6)时,我也没有将这些路径添加到 path 变量中(遵循安装说明的建议)。它工作得很好,不仅适用于我的 Apache+Django 项目,而且适用于在普通 CMD 窗口中运行C:\Anaconda3\python.exe xx.py。昨天重装了最新的Anaconda,出现问题。
猜你喜欢
  • 2017-04-08
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 2019-07-13
  • 2021-06-07
  • 1970-01-01
  • 2020-07-26
相关资源
最近更新 更多