2

私はこのtemplatetagを使用しています:

@register.filter
def php_striptags(text, allowed=""):
    soup = BeautifulSoup(text)

    # list all tags
    allowed_tags = allowed.split()

    for tag in soup.find_all(True):
        if tag.name not in allowed_tags:
            tag.unwrap()

    return soup.encode_contents().decode('utf8')

開発マシンでは問題なく動作しますが、本番環境では次のエラーが発生します。

Exception Type:     RuntimeError
Exception Value:    restricted attribute
Exception Location:     /usr/local/lib/python2.7/inspect.py in getargspec, line 813

私は自分のサイトをwebfactionでホストしており、apacheとmod_wsgiで実行しています。何が間違っている可能性がありますか?

4

2 に答える 2

4

最後に、BeautifulSoupドキュメントに実際に文書化されている実際の問題を見つけました: http ://www.crummy.com/software/BeautifulSoup/bs4/doc/#other-parser-problems

スクリプトが1台のコンピューターで機能するが、別のコンピューターでは機能しない場合は、2台のコンピューターで使用可能なパーサーライブラリが異なることが原因である可能性があります。たとえば、lxmlがインストールされているコンピューターでスクリプトを開発し、html5libのみがインストールされているコンピューターでスクリプトを実行しようとしたとします。これが重要である理由については、パーサー間の違いを参照し、BeautifulSoupコンストラクターで特定のパーサーライブラリに言及することで問題を修正してください。

したがって、スープを作るには、次のようなものを試してください。

soup = BeautifulSoup(text, "html.parser")
于 2015-03-19T18:22:08.387 に答える
0

システムのPythonlibにBeautifulSoupをインストールしたのではなく、BeautifulSoupをダウンロードして、カスタムに配置したと思いますPYTHONPATH。これにより、BeautifulSoupのコピーが外部Pythonコードと見なされ、Pythonはそれを制限付きモードで実行します(制限付き実行を参照) 。

pip/を介してBeautifulSoupをeasy_installインストールするか、OSパッケージをインストールするだけで、このエラーは解消されます。

于 2013-06-07T20:47:40.363 に答える