我正在尝试在Ubuntu 13.04上将python-chess
软件包安装到Python 3.3。
以下是github(https://github.com/niklasf/python-chess)的链接,也可以使用pip
进行安装。
当我将它安装到Python 2.7(带有pip
或来自源代码的setup.py
)时,一切都运行良好,但是当我尝试使用pip3
将其安装到Python 3.3时使用setup.py
运行python3
,它似乎运行良好,但当我实际尝试在python 3.3解释器中导入它时,我得到以下内容:
>>> import chess
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.3/dist-packages/python_chess-0.0.4-py3.3-linux-i686.egg/chess/__init__.py", line 30, in <module>
from libchess import START_FEN
ImportError: /usr/lib/libboost_python-py27.so.1.53.0: undefined symbol: PyClass_Type
>>>
从这条消息看来,该库正在尝试将boost-python
用于Python 2.7,即使它已经构建,然后随Python 3.3一起安装。我为Python 2.7和Python 3.3安装了boost-python
包,所以我认为我需要的是让这个库使用/usr/lib/libboost_python-py33.so.1.53.0
文件的方法。
我怎样才能做到这一点?或许我的结论是错误的,在这种情况下,我该如何解决这个问题?
答案 0 :(得分:2)
python-chess使用了一些在执行setup.py时编译的C ++代码;它找到了 boost 2.7版本的boost库,并与之链接。现在你不能回去了, 你必须删除你安装的内容并重新编译它。这一次,确保它 找到合适的图书馆。我猜你有一个/usr/lib/libboost_python.so符号链接 /usr/lib/libboost_python-py27.so.xxx,对吗?您可以暂时更改此符号链接 它可能链接到正确的库。
编辑:在静态链接并确保/usr/lib/libboost_python.a指向/usr/lib/libboost_python-py33.a
时,它可以正常工作