Python 3.4中的BeautifulSoup无效语法(在2to3.py之后)

时间:2015-05-09 12:39:42

标签: python python-3.x beautifulsoup python-3.4

我正在尝试在Python 3.4中安装Beautiful Soup 4。我从命令行安装了它(由于我没有转换它而得到了无效的语法错误),将2to3.py转换脚本运行到bs4,现在我得到一个新的无效语法错误。

>>> from bs4 import BeautifulSoup
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
    from bs4 import BeautifulSoup
  File "C:\Python34\bs4\__init__.py", line 30, in <module>
    from .builder import builder_registry, ParserRejectedMarkup
  File "C:\Python34\bs4\builder\__init__.py", line 4, in <module>
    from bs4.element import (
  File "C:\Python34\bs4\element.py", line 1213
    print 'Running CSS selector "%s"' % selector
                                    ^
SyntaxError: Missing parentheses in call to 'print'

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

BeautifulSoup 4 需要手动转换才能在Python 3上运行。您正在尝试运行仅与Python 2兼容的代码;看来你没能正确转换代码库。

来自BeautifulSoup 4 homepage

  

Beautiful Soup 4适用于Python 2(2.6+)和Python 3。

现在抛出异常的行应读取:

print('Running CSS selector "%s"' % selector)

代码库确实使用Python 2语法,但setup.py安装程序会将此转换为兼容的Python 3语法。确保使用pip安装项目:

pip install beautifulsoup4

或使用与Python 3.4捆绑在一起的pip版本:

python3.4 -m pip install beautifulsoup4

或使用easy_install

easy_install beautifulsoup4

如果您只下载了tarball,至少运行

python3.4 setup.py install

让安装程序为您正确转换代码库;转换后的代码被复制到您的Python设置中。您可以在运行命令后丢弃下载的源目录,请参阅How installation works

或者,运行:

python3.4 setup.py build

并复制build/lib目录。再次,使用原始源目录,因为它保持不变。