在 OpenSolaris 上安装 Shoutpy + Boost.python 的问题及解决方案

71 阅读2分钟

用户在 OpenSolaris 2009.06 上安装 Shoutpy 时遇到问题。Shoutpy 依赖于 Boost.python,用户已从 Blastwave 安装了 Boost_devel 库,并将 /opt/csw/include/boost 链接到 /usr/include/boost。但是在尝试使用 easy_install 安装 Shoutpy 时,遇到了如下错误:

pfexec easy_install shoutpy
Searching for shoutpy
Reading http://pypi.python.org/simple/shoutpy/
Reading http://dingoskidneys.com/shoutpy/
Best match: shoutpy 1.0.0
Downloading http://dingoskidneys.com/shoutpy/shoutpy-1.0.0.tar.gz
Processing shoutpy-1.0.0.tar.gz
Running shoutpy-1.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-w7XQfv/shoutpy-1.0.0/egg-dist-tmp-k11Dky
In file included from /usr/include/boost/python/object/make_instance.hpp:9,
                 from /usr/include/boost/python/object/make_ptr_instance.hpp:8,
                 from /usr/include/boost/python/to_python_indirect.hpp:11,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:10,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:12,
                 from /usr/include/boost/python/args.hpp:25,
                 from /usr/include/boost/python.hpp:11,
                 from shoutpy.cc:26:
/usr/include/boost/python/object/instance.hpp:44: error: a casts to a type other than an integral or enumeration type cannot appear in a constant-expression
/usr/include/boost/python/object/instance.hpp:44: error: '->' cannot appear in a constant-expression
/usr/include/boost/python/object/instance.hpp:44: error: `&' cannot appear in a constant-expression
In file included from /usr/include/boost/python/converter/registry.hpp:9,
                 from /usr/include/boost/python/converter/registered.hpp:8,
                 from /usr/include/boost/python/object/make_instance.hpp:10,
                 from /usr/include/boost/python/object/make_ptr_instance.hpp:8,
                 from /usr/include/boost/python/to_python_indirect.hpp:11,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:10,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:12,
                 from /usr/include/boost/python/args.hpp:25,
                 from /usr/include/boost/python.hpp:11,
                 from shoutpy.cc:26:
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:99: error: '->' cannot appear in a constant-expression
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:99: error: `&' cannot appear in a constant-expression
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:99: error: template argument 1 is invalid
/usr/include/boost/python/converter/rvalue_from_python_data.hpp:99: error: `value' is not a member of `<declaration error>'
error: Setup script exited with error: command '/usr/lib/python2.6/pycc' failed with exit status 1

2、解决方案:

为了解决这个问题,可以尝试以下解决方案:

  • 确保 Boost.python 库已正确安装。可以在 Bash 中运行以下命令查看 Boost.python 是否已安装:
pkg search boost python

如果没有安装,请按照系统提供的说明进行安装。

  • 确保 Boost.python 库和 Boost C++ 库的版本兼容。这两个库的版本不兼容可能会导致安装问题。

  • 确保 Boost.python 库的路径已添加到系统的库路径中。可以在 Bash 中运行以下命令查看库路径:

echo $LD_LIBRARY_PATH

如果 Boost.python 库的路径没有添加到库路径中,请使用以下命令将其添加到库路径中:

export LD_LIBRARY_PATH=/path/to/boost/python/lib:$LD_LIBRARY_PATH
  • 确保 Shoutpy 的安装脚本可以找到 Boost.python 库。可以在 Bash 中运行以下命令查看安装脚本:
cat shoutpy/setup.py

如果安装脚本没有正确引用 Boost.python 库,请对其进行修改以正确引用 Boost.python 库。

  • 重新尝试安装 Shoutpy。在 Bash 中运行以下命令重新安装 Shoutpy:
easy_install shoutpy

如果问题仍然存在,请查看 Shoutpy 的文档或向 Shoutpy 的开发者寻求帮助。