Трудность с путями Cython для компиляции рабочей версии файлов pyx pxd - PullRequest
0 голосов
/ 31 мая 2018

В Cython есть 3 файла, которые представляют 2 класса:

1. ../src/cython/class1.pyx
2. ../src/cython/class1.pxd
3. ../src/cython/class2.pyx

Я хочу импортировать класс, определенный в class1 в class2, чтобы иметь возможность использовать типизацию Cython для пользовательского класса.

Внутри class2, если я импортирую Class1, как это, я не могу скомпилировать:

from src.cython.class1 cimport Class1

Внутри class2, если я импортирую Class1, как показано ниже, я могу скомпилироватьно я получаю ошибку No module named 'src.cython.class1' при выполнении:

from class1 cimport Class1

Я запускаю setup.py с ../

Этот вопрос был помечен как возможный дубликат совсем другой проблемы.Я получал эти ошибки только потому, что пропустил __init__.py в папке cython.

1 Ответ

0 голосов
/ 01 июня 2018

Структура каталогов должна быть такой:

  1. ../src/cython/class1.pyx
  2. ../src/cython/__init__.pxd
  3. ../src/cython/class1.pxd
  4. ../src/cython/class2.pyx

В class2.pyx:

from class1 cimport Class1

Файл setup.py должен иметь:

extensions = [Extension('my_package.cython.class1',
                        <..>
              ),
              Extension('my_package.cython.class2',
                        <..>,
              ),
]

Ошибка «no module» вызвана тем, что имена каталогов делаютне соответствует имени расширения, в дополнение к каталогу, который необходимо определить как пакет.

__init__.pxd эквивалентно __init__.py для cimport.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...