我正在回答我自己的问题,但因为我熬夜搞清楚,我希望能给别人带来一些痛苦。如果您在正确安装pytidylib或utidylib后收到以下任一消息,则此答案可能有所帮助。
在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.
'
如果您收到这些错误,请阅读此答案。我希望它可以帮助你。
答案 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复制到我的项目文件夹,它就解决了。