Ошибка импорта при импорте файла Python. Python

1

У меня есть файл python, который импортирует несколько пакетов, используя следующий код:

from pyzoltan.core.carray import UIntArray, DoubleArray
from pyzoltan.core import zoltan

Первые два импорта, то есть UIntArray и DoubleArray, успешно импортируются, но третий импорт, т.е. zoltan дает ImportError.

pyzoltan/core содержит следующие файлы:

|-- __init__.py
|-- __init__.pyc
|-- carray.pxd
|-- carray.pxd.mako
|-- carray.pyx
|-- carray.pyx.mako
|-- carray.so
|-- generator.py
|-- generator.pyc
|-- msstdint.h
|-- tests
|   |-- 3d_partition.py
|   |-- 3d_partition.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- __pycache__
|   |   |-- test_zoltan.cpython-27-PYTEST.pyc
|   |-- geometric_partitioner.py
|   |-- geometric_partitioner.pyc
|   |-- mesh.txt
|   |-- test_zoltan.py
|   |-- test_zoltan.pyc
|   |-- zcomm.py
|   |-- zcomm.pyc
|-- zoltan.pxd
|-- zoltan.pyx
|-- zoltan_comm.pxd
|-- zoltan_comm.pyx
|-- zoltan_dd.pxd
|-- zoltan_dd.pyx
|-- zoltan_utils.py
|-- zoltan_utils.pyc

Является ли проблема из-за отсутствия zoltan.mako и zoltan.so или чего-то еще?

Теги:
cython

2 ответа

0

У вас есть carray.so но не zoltan.so. Каким бы ни был построенный процесс сборки, первый должен иметь возможность производить и последнее (т. cython zoltan.pyx cython на zoltan.pyx и zoltan.pxd).

0

Вам не хватает файла pyzoltan/core/zoltan.so.

Файл .pyx может быть скомпилирован Cython в .c файл, который может быть скомпилирован компилятором C для файла .so (или .pyd в Windows).

Существует несколько способов создания кода Cython. Нормальным/рекомендуемым способом является запись файла setup.py distutils/setuptools. Содержимое может выглядеть примерно так:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("zoltan.pyx")
)    

и затем вы можете создать файл .so, выполнив

python setup.py build_ext --inplace

Но на самом деле вам не нужно писать собственный setup.py. Если вы устанавливаете основные зависимости (и убедитесь, что они удовлетворяют требованиям к версии), следуйте инструкциям по установке, после чего вы должны zoltan.

  • 0
    Мне удалось скомпилировать zoltan.so с помощью setup.py но теперь при запуске кода на python я получаю еще одну ошибку импорта, ImportError: /home/invinciblycool/Documents/SEM5/pdc_lab/venv/local/lib/python2.7/site-packages/pyzoltan/core/zoltan.so: undefined symbol: Zoltan_Set_Obj_List_Fn Я знаю, что это может быть очень трудно понять, но любая помощь приветствуется.
  • 0
    Да, я уже установил PySPH с pip, но скрипт, включающий zoltan в качестве требования, не работает из-за той же ошибки, в то время как зависимости ядра, кажется, работают совершенно нормально.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню