Mac OS X 10.6 Python 2.7 pytidylib utidylib无法找到libtidy

时间:2010-10-31 19:03:24

标签: python htmltidy

我正在回答我自己的问题,但因为我熬夜搞清楚,我希望能给别人带来一些痛苦。如果您在正确安装pytidylibutidylib后收到以下任一消息,则此答案可能有所帮助。

在Snow Leopard上学习Python,我安装了32位版本的Python 2.7,以便我可以使用IDLE解释器/编辑器。 Stackoverflow有一个很好的explanation为什么我必须这样做。

当我安装utidylib时,我从“import tidy”收到以下错误:

'OSError: Couldn't find libtidy, please make sure it is installed'。

使用pytidylib时,我在尝试'from tidylib import tidy_document'时出现此错误:

'OSError: Could not load libtidy using any of these names: libtidy,libtidy.so,libtidy-0.99.so.0,cygtidy-0-99-0,tidylib,libtidy.dylib,tidy.'

如果您收到这些错误,请阅读此答案。我希望它可以帮助你。

3 个答案:

答案 0 :(得分:4)

我在Linux上遇到过类似的问题(请参阅下面的stacktrace)。 在ubuntu 11.10(Python 2.7)和Gentoo(Python 2.6)的virtualenv中使用pip安装了pytidylib == 0.2.1。 在Ubuntu上安装apt-get install libtidy-dev,在Gentoo上安装emerge app-text/htmltidy,解决了它。

----------------------------------------------------------------------
File "/home/andre/Progz/some_site/djcode/apps/default/tests.py", line ?, in default.tests.__test__.doctest
Failed example:
    from tidylib import tidy_document
Exception raised:
    Traceback (most recent call last):
      File "/home/andre/Progz/some_site/lib/python2.6/site-packages/django/test/_doctest.py", line 1267, in __run
        compileflags, 1) in test.globs
      File "", line 1, in 
        from tidylib import tidy_document
      File "/home/andre/Progz/some_site/lib/python2.6/site-packages/tidylib/__init__.py", line 71, in 
        raise OSError("Could not load libtidy using any of these names: %s" % (",".join(LIB_NAMES)))
    OSError: Could not load libtidy using any of these names: libtidy,libtidy.so,libtidy-0.99.so.0,cygtidy-0-99-0,tidylib,libtidy.dylib,tidy
----------------------------------------------------------------------

答案 1 :(得分:0)

虽然看起来Python软件包找不到文件,但真正发生的是我为错误的架构编译了libtidy:x86_64而不是i386。使用32位Python安装程序使它们不兼容。

对于像我这样的新手,lipo会告诉你文件的架构:

$ lipo -info /Library/Frameworks/Python.framework/Versions/2.7/bin/python
Architectures in the fat file: /Library/Frameworks/Python.framework/Versions/2.7/bin/python are: ppc i386

$ lipo -info /usr/lib/libtidy.dylib
Non-fat file: /usr/lib/libtidy.dylib is architecture: x86_64

您可能必须找到要比较的libtidy.dylib和python文件。要解决此问题,您必须为i386重新编译libtidy(或链接到系统上已有的i386编译的libtidy)。要重新编译i386,请使用these instructions进行以下修改:

cvs -z3 -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy co -P tidy
cd tidy
sh build/gnuauto/setup.sh
./configure --prefix=/usr CFLAGS="-arch i386"
make && sudo make install

这对我有用。我希望它也适合你。

答案 2 :(得分:0)

我遇到了同样的问题。我安装了tidylib,但仍然出现错误,如下所示。

 raise OSError("Could not load libtidy using any of these names: %s" % (",".join(LIB_NAMES)))
    OSError: Could not load libtidy using any of these names: libtidy,libtidy.so,libtidy-0.99.so.0,cygtidy-0-99-0,tidylib,libtidy.dylib,tidy

然后我将/ usr / bin / tidy复制到我的项目文件夹,它就解决了。