簡體   English   中英

python swig 導入錯誤,如何解決?

[英]python swig error importing, how to fix it?

我在 python 中有一個代碼,想用它來喝水,所以我在 linux 上輸入了以下幾行:

1. swig -python Olympics.i
2. gcc -std=c99 -fPIC -c Olympics_wrap.c -I/usr/local/include/python3.6m
3. ld -shared Olympics.o Olympics_wrap.o -L/usr/local/include/python3.6m/ -o _Olympics.so

並得到了一個名為 Olympics.py 的文件,我將那個文件復制到了我的項目中並寫入了 import Olympics 但我遇到了一個錯誤,即 _Opympics.so 丟失了,所以我添加了它,但現在我得到了:

Traceback (most recent call last):
  File "/../Olympics.py", line 1, in <module>
    import Olympics.py
  File "/../Olympics.py", line 26, in <module>
    _Olympics = swig_import_helper()
  File "/../Olympics.py", line 22, in swig_import_helper
    _mod = imp.load_module('_Olympics', fp, pathname, description)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 243, in load_module
    return load_dynamic(name, filename, file)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 343, in load_dynamic
    return _load(spec)
ImportError: dlopen(../_Olympics.so, 2): no suitable image found.  Did find:
    ../_Olympics.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
    ../_Olympics.so: stat() failed with errno=25

我做錯了什么?

這通常發生在未正確編譯/抽吸時。 我不確定這是否可行,但我個人在使用 distutil 方面取得了更大的成功......

制作 setup.py python 代碼。

# setup.py
from distutils.core import setup, Extension
module = Extension('_Olympics', sources['Olympics.c','Olympics.i'])
setup(name='Olympics', ext_modules=[module], py_modules=["Olympics"])

然后 go 到您的終端, cd 到包含 Olympics 文件的目錄。 在這里,您可以在一行中將其全部編譯:

python setup.py build_ext --inplace

生成.py和.so后,先檢查python是否可以導入同目錄下的模塊。 如果成功,您應該可以將 Olympics.py 和 Olympics.so 移動到您要導入此模塊的另一個目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM