我有一个脚本导入bs4,如下所示:
from bs4 import BeautifulSoup
我没有安装bs4,而是将bs4
beautifulsoup4-4.4.1
目录(来自http://www.crummy.com/software/BeautifulSoup)包含在与我的脚本相同的目录中。
当我直接从命令提示符(在Windows 7 VirtualBox VM上)运行此脚本时
python myscript.py
导入工作正常(我的脚本的其余部分也是如此)。
但是我需要从一个更大的框架运行这个脚本,它从一些其他Python代码中调用它作为模块的一部分。我不能对此更具体,因为该框架归我公司所有。
我的脚本被正确调用,直到它进入导入bs4的程度。我收到以下错误:
No module named bs4.element
此代码在与上面相同的Windows 7 VirtualBox VM上运行。我确保bs4 diretcory在PYTHONPATH
上(路径为C:\Users\me\path-to-bs4
)。我知道找到了bs4,因为当我在bs4/__init__.py
的顶部添加一个print语句时,我在输出中看到了结果。
我对导致这个问题的原因感到茫然。有人能指出我正确的方向吗?
我正在使用Python 2.7.6。
答案 0 :(得分:0)
可能bs4/element.py
被路径上某处名为element.py
的另一个Python脚本掩盖。
有人会通过更好的解释来改善这个答案,或者验证它是否正确?
在其他SO问题中也提到了这种可能性,我没有意识到它也可以应用于我的情况,因为我们的框架没有其他名为element.py
的脚本。但是冲突的脚本也可能是我们导入的外部模块的一部分。
这仍然是可能的,这不是我收到no module named bs4.element
错误的原因。
我的解决方法是我使用pip
在VM上安装bs4。