0

皆さんへの別の質問-

だから私はPysomapと呼ばれるプログラムを動作させようとしています(基本的にはISOMAPですが、python [http://web.vscht.cz/spiwokv/pysomap/]の場合)、Ubuntuでビルドするためにできる限りの指示に従います、Windows、およびFedora(ビルド済みライブラリ)ですが、動作させることができないようです。Windows(推奨される実装プラットフォーム)では、Pythonにアクセスしてpysomapをインポートするたびに、上記のエラーが発生します。誰かがこれを解決する方法を知っていますか?

ありがとう

-J

4

3 に答える 3

1

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
于 2012-04-09T02:09:58.237 に答える
1

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

于 2012-04-09T00:44:07.587 に答える
0

このソースコードは5年以上前のものであり、floydのビルドスクリプトはハードコードされたpython2.4を想定しているように見えます。

floydモジュールがビルドされなかったことは明らかです。ほとんどの場合、ビルドステップに戻って、を適切に生成していることを確認する必要があります_floyd.so

正しく構築した場合、これは失敗しないはずです。
python -c "import _floyd"

于 2012-04-09T00:33:23.213 に答える