为啥我不能在 Anaconda 之外导入 Python 模块?

Posted

技术标签:

【中文标题】为啥我不能在 Anaconda 之外导入 Python 模块?【英文标题】:Why can't I import Python modules outside of Anaconda?为什么我不能在 Anaconda 之外导入 Python 模块? 【发布时间】:2020-09-03 19:42:38 【问题描述】:

首先,我查看了其他人听起来相似的问题,但没有发现像我这样的情况。如果您知道另一篇可以解决我问题的帖子,我会全神贯注(眼睛,随便)。

到目前为止,我的大部分 Python 工作都是通过 Anaconda 使用 Spyder,但我不太喜欢它。所以,我正在尝试探索其他 IDE,目前是 Atom。我已经设置 Atom 和 cmd.exe 通过将 .\Anaconda3 文件夹添加到我的路径来从 Anaconda 安装运行 Python。我还添加了 .\Anaconda3\Lib\site-packages 以及我发现 anaconda 已存储其模块的其他任何地方(在基本环境中)。

Python 在命令提示符和 Atom 中运行良好(使用“脚本”包),但由于某种原因,我无法导入除 sysos 之外的任何模块,除非我使用 Anaconda 终端或其包含的终端之一IDE。我什至不能import numpy,尽管我可以导航到文件资源管理器中的站点包文件夹并在其中看到它。下面是并排显示 Anaconda 提示符和命令提示符的屏幕截图。您可以看到我的路径变量和可执行文件在两者中都是相同的,但 conda imports numpy 很好,而 cmd 不能。我想知道为什么以及如何解决它。我在这个问题上看到的所有其他问题(*** 和其他地方)都说要将模块的文件路径添加到我的PATH variable(我已经完成)或使用Anaconda executable(我正在做)运行程序.

Command Prompt vs Anaconda Prompt exectuable, path variable and importing numpy

另外,我在互联网上搜索了ImportError(如图所示)并找到了指向 Anaconda 文档的链接,说要检查 System32 文件夹中是否有与 mkl 相关的 dll,但我的中没有。然后我查看了numpy 文件夹中的_distributor_init.py 文件,找出它试图从哪里提取_mklinit 函数,看看它是否看起来与Anaconda 不同。但是,如果我理解正确,“from .import”意味着它正在为该函数在同一个numpy 目录中查找,并且其中有一个名为_mklinit.cp37-win_amd64.pyd 的文件(我无法查看其中的内容,但它对我来说似乎是一个很好的候选人)。在任何情况下,命令提示符和 Anaconda 提示符看起来都在同一个位置,所以这也无济于事。

我打算将 Python 与 Anaconda 分开安装,但我听说除非我知道自己在做什么(我不知道),否则我可能会给自己带来问题。所以,我想通过访问 Anaconda 拥有的包来做到这一点,每个人都一直说我可以做到,但到目前为止它对我不起作用。

我可能很笨,但我不明白。任何帮助将不胜感激。

跑步:

Windows 10

Python 3.7.4

Anaconda 4.8.3

【问题讨论】:

嗨 @rustic1112,欢迎来到 Stack Overflow。看起来您正在尝试在不使用任何 conda 虚拟环境(包括 conda 基础环境)的情况下从 Anaconda 运行 python。 Anaconda 非常依赖这一点,以便让您管理不同的 Python 环境和包版本,而无需担心依赖冲突 要从终端进入基本的 conda 环境,通常你必须根据你的 shell 执行source anaconda3/bin/activate. anaconda3/bin/activate 之类的操作。之后,您需要执行 conda activate myenv 以(任意)进入您已经创建的名为 myenv 的环境。同样在基础环境中,您可以通过执行 conda create -n myenv python=3.7 之类的操作来创建 conda 环境,并且您可以使用 conda deactivate 退出环境。 假设您熟悉所有这些,您需要使用所需的 conda 环境的路径设置您的 IDE,例如 ~/anaconda3/envs/myenv/bin/python,假设您所需的 conda 环境名为 myenv。然后,IDE 应该可以访问安装在该特定 conda 环境中的所有包,并使用该特定版本的 Python。 根据this post 的说法,使用 Atom 设置 anaconda 可能会有所不同。要在 Pycharm 中进行设置,请参阅 here。或者,您可以使用任何您想要的 IDE,并从终端(在正确的 conda 环境中)运行您的 python 文件,方法是对某些文件 myfile.py 执行 python myfile.py 【参考方案1】:

我一直在努力解决这个问题。我的 Anaconda Python 是 3.8。在安装 Anaconda 之前,我安装了 Python 3.9。我有时想使用我的 3.9 Idle,但 pip 总是将添加的包放入 Anaconda。 Python 文档告诉你如何做。 file:///Library/Frameworks/Python.framework/Versions/3.9/Resources/English.lproj/Documentation/installing/index.html

在我的 MacBook Pro 终端中,我输入了(作为示例)。它奏效了。

python3.9 -m pip install torchvision

【讨论】:

以上是关于为啥我不能在 Anaconda 之外导入 Python 模块?的主要内容,如果未能解决你的问题,请参考以下文章

在 ubuntu 上使用 anaconda 安装 openCV

为啥我无法在 Anaconda 或 python 中正确安装 dlib

为啥我的pycharm不能加pygame?

为啥我不能在方法之外调用变量? [复制]

为啥我不能在方法之外进行赋值?

Anaconda入门教程