2

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

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

当我安装 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.'

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

4

3 回答 3

5

我在 Linux 上遇到了类似的问题(参见下面的堆栈跟踪)。pytidylib==0.2.1 在 Ubuntu 11.10 (Python 2.7) 和 Gentoo (Python 2.6) 的 virtualenv 中安装了 pip。apt-get install libtidy-dev在 Ubuntu 和emerge app-text/htmltidyGentoo 上安装,解决了它。

-------------------------------------------------- --------------------
文件“/home/andre/Progz/some_site/djcode/apps/default/tests.py”,行?,在 default.tests.__test__.doctest
失败的例子:
    从 tidylib 导入 tidy_document
引发异常:
    回溯(最近一次通话最后):
      文件“/home/andre/Progz/some_site/lib/python2.6/site-packages/django/test/_doctest.py”,第 1267 行,在 __run
        compileflags, 1) 在 test.globs
      文件“”,第 1 行,在
        从 tidylib 导入 tidy_document
      文件“/home/andre/Progz/some_site/lib/python2.6/site-packages/tidylib/__init__.py”,第 71 行,在
        raise OSError("Could not load libtidy using any of these names: %s" % (",".join(LIB_NAMES)))
    OSError:无法使用以下任何名称加载 libtidy:libtidy、libtidy.so、libtidy-0.99.so.0、cygtidy-0-99-0、tidylib、libtidy.dylib、tidy
-------------------------------------------------- --------------------
于 2012-01-06T22:00:56.893 回答
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 重新编译,请使用这些指令并进行以下修改:

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

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

于 2010-10-31T19:35:31.050 回答
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 复制到我的项目文件夹中,它得到了解决。

于 2016-02-27T07:18:25.690 回答