我有一个Python脚本想要使用BeautifulSoup:
from bs4 import BeautifulSoup
当我从命令行运行脚本时,它运行得很好。当我从浏览器外部运行脚本时,它在那一行就死了。网络日志显示:
ImportError: No module named bs4
我也试过,结果是一样的:
import bs4
import BeautifulSoup
我从一个tarball安装了这个模块,它现在位于Python路径中的一个文件夹中:
/usr/home/myName/.local/lib/python2.7/site-packages/
我已经确保bs4
目录以及文件夹中所有.py和.pyc文件的权限允许执行(chmod 775 *.py
),并且我已经检查了内部和外部是否运行了相同版本的Python(2.7.9 (default, Jan 12 2015, 16:33:18)
[GCC 4.2.1 20070719 [FreeBSD]]
)
为了计算机上所有用户的利益,您没有安装BeautifulSoup。相反,您的安装只是为了名为"myName"的用户的利益。特别是,您还没有为运行web服务器的用户安装它(通常命名为"www"或"www data")。
如果可以,请在系统范围内安装BeautifulSoup。
否则,你可以这样修改你的脚本:
import sys
sys.path[0:0] = ['/usr/home/myName/.local/lib/python2.7/site-packages/']
from bs4 import BeautifulSoup
感谢@robᵩ(phi)指出错误:因为这个脚本在共享服务器上,我无法将执行权限授予运行web服务器的"用户"(在本例中为"nobody")。我能够使用ssh运行脚本,因为在这种情况下我是用户。
因为我无法说服托管服务为所有用户安装BeautifulSoup
,所以我最终使用了另一个库lxml.html
,我的主机服务器确实使用Python安装了这个库。
(我发现lxml.html
也很乐意与之合作)