ImportError:仅在 django 中没有名为“bs4”的模块

Posted

技术标签:

【中文标题】ImportError:仅在 django 中没有名为“bs4”的模块【英文标题】:ImportError: No module named 'bs4' in django only 【发布时间】:2017-02-19 17:16:06 【问题描述】:

同样的问题被问了很多次,但我找不到解决办法。

使用 pip 安装软件包后,我可以将其导入 python 控制台或 python 文件,它可以按预期工作。 当我尝试在 django 中包含相同的包时,它给出了import error。 我是否需要修改settings.py 文件或我需要添加的任何要求?我在虚拟环境的帮助下驾驶 django。

例如: 我正在使用BeautifulSoup,我正在尝试导入from bs4 import BeautifulSoup,我收到错误ImportError: No module named 'bs4'

这个错误只出现在 django 中。我无法弄清楚为什么会这样。

附上截图供参考。

1. python 控制台 - 没有显示错误

2。 django 控制台- 导入错误

很抱歉,因为很难阅读控制台,但我可以包含的任何其他内容将帮助我让自己更清楚,我们将不胜感激。

【问题讨论】:

复制粘贴输出而不是添加屏幕截图。屏幕截图是邪恶的(难以阅读、可访问性问题、无法索引文本以供搜索) 没有输出可显示。这只是一个导入错误。 应该是复制粘贴的错误。正如 Jérôme 所说,屏幕截图是邪恶的。 屏幕截图只是为了验证 python2 和 python3 都没有显示导入错误,但 django 有。也许从 django 的错误中,有些人可能会理解我无法理解的问题 为什么要投反对票?我应该问这个问题有多好? 【参考方案1】:

您没有显示您网站的代码或您运行的命令(以及您输入的 URL,如果有)来触发此问题。几乎可以肯定,命令行上的 Python 环境和在 Django 中运行的环境之间存在一些差异。

您是否使用虚拟环境?如果是这样,则应将依赖项分别添加到每个环境中。您是否从不同的工作目录进行操作? Python 通常在sys.path 的某个位置拥有当前目录,因此如果您更改了目录,您可能会以这种方式使bs4 不可用。

在交互式 Python 提示符下,尝试

import bs4
bs4.__file__

这会告诉你 bs4 是从哪里导入的,因此可能会告诉你为什么它对 Django 不可用。

【讨论】:

该文件已经存在于 python2 和 python3 的站点包中。之前使用pip 下载的所有软件包都可以使用,除了这个。我有什么明显的遗漏吗? 尝试从两种环境中打印sys.path,看看hte 差异是否会导致您的问题。

以上是关于ImportError:仅在 django 中没有名为“bs4”的模块的主要内容,如果未能解决你的问题,请参考以下文章

Django:ImportError:没有名为'corsheaders'的模块

Django - ImportError:没有名为应用程序的模块

Python3.7 ImportError:没有名为“django”的模块

ImportError:没有名为 redis_cache 的模块

ImportError:没有名为 django.core.wsgi 的模块

Django 1.8:抛出 ImportError:没有名为“MySQLdb”的模块