1

我有一个导入 bs4 的脚本,如下所示:

from bs4 import BeautifulSoup

我没有安装 bs4,而是将(来自http://www.crummy.com/software/BeautifulSoupbs4 )的目录包含在与我的脚本相同的目录中。beautifulsoup4-4.4.1

当我直接从命令提示符运行此脚本时(在 Windows 7 VirtualBox VM 上)

python myscript.py

导入工作得很好(我的脚本的其余部分也是如此)。

但是我需要从一个更大的框架中运行这个脚本,它作为一个模块的一部分被其他一些 Python 代码调用。我不能更具体地说明这一点,因为该框架归我公司所有。

我的脚本被正确调用,直到它到达导入 bs4 的地步。我收到以下错误:

No module named bs4.element

此代码在与上述相同的 Windows 7 VirtualBox VM 上运行。我确保 bs4 目录已打开PYTHONPATH(路径为C:\Users\me\path-to-bs4)。我知道找到了 bs4,因为当我在最顶部添加一个打印语句时,bs4/__init__.py我会在输出中看到结果。

我不知道是什么导致了这个问题。谁能指出我正确的方向?

我正在使用 Python 2.7.6。

4

1 回答 1

0

它可能被路径上某处bs4/element.py调用的另一个 Python 脚本所掩盖。element.py

有人会用更好的解释改进这个答案,还是验证它是否正确?

在其他 SO 问题中也提到了这种可能性,我没有意识到它也可以应用于我的情况,因为我们的框架没有其他名为element.py. 但是冲突的脚本也可能是我们导入的外部模块的一部分。

仍然有可能这不是我收到no module named bs4.element错误的原因。

我的解决方法是我曾经pip在 VM 上安装 bs4。

于 2015-11-25T14:12:56.190 回答