如何让程序不扔"Error: Can't load Floyd's algorithm library"



你们所有人的另一个问题-

所以我正在尝试让一个名为 Pysomap 的程序工作(它基本上是 ISOMAP,但对于 python[http://web.vscht.cz/spiwokv/pysomap/]),我尽可能地遵循指示,在 Ubuntu、Windows 和 Fedora(预构建库)上构建它,但似乎无法让它工作。在Windows(这是首选的实现平台)上,每次我去python并导入pysomap时,它都会给我上述错误。有人知道如何解决这个问题吗?

谢谢

-J

在 pysomap 目录中,创建一个包含以下内容的 setup.py 文件:

from distutils.core import setup, Extension
setup(name="pysomap",
      version="2007.07",
      url ="http://web.vscht.cz/spiwokv/pysomap/",
      description="A library for isometric feature mapping.",
      license='Unknown',
      author="Vojtech Spiwok",
      py_modules=["floyd", "pysomap"],
      ext_modules=[Extension('_floyd', ["floyd_wrap.c", "floyd.c"])]
      )

构建_floyd扩展(假设您安装了与Python distutils兼容的C编译器):

python setup.py build_ext --inplace

运行 demo.py:

python demo.py
Calculating distance matrix ............    2.24 s
Using epsilon-isomap, epsilon = 0.500000, calculating 2-dimensional embedding
Calculating graph matrix ...............    1.21 s
Calculating the shortest path matrix ...    2.22 s
Multidimensionally scalling ............    7.11 s
--------------------------------------------------
Total procedure ........................   12.79 s

我看了一下代码,因为Isomap是一个很酷的算法。代码看起来不像是由熟悉 Python 的人编写的,整个 floyd 扩展模块编译有点劣质 - 它实际上不是为我构建的,我很确定这是你的问题(他们捕获模块的导入异常并打印出您给出的错误)。

我在build_floyd.sh中将一些硬编码的内容更改为我的系统的不同硬编码值。(适当的构建系统将使其变得不必要)。以下是在我的 Ubuntu 系统中工作的方法。我测试了一下,它运行正常。

#!/bin/sh
# run this script to generate library for Floyd's
# algorithm library
echo "generating input files using SWIG ..."
swig -python floyd.i
echo "compiling ..."
# change compiler if you use other than gcc
gcc -c floyd.c floyd_wrap.c -I/usr/include/python2.6 -fPIC
echo "linking ..."
ld -shared floyd.o floyd_wrap.o -o _floyd.so 
#echo "for SELinux you must run chcon ..."
#chcon -t textrel_shlib_t _floyd.so 

您可能还必须将 demo.py 中的第一行更改为 #!/usr/bin/env python

这个源代码已经有5年多的历史了,floyd的构建脚本看起来假设硬编码的python2.4。

很明显,您的floyd模块没有构建。您很可能必须返回到构建步骤,并确保正确生成_floyd.so

如果您正确构建了它,那么这对您来说应该不会失败:
python -c "import _floyd"

相关内容

  • 没有找到相关文章

最新更新