2017-02-08 3 views
0

Я пытаюсь скомпилировать на Windows файл Cython (.pyx), файл, который я только что сохранил с .py. Вот мой путь к проекту.Ошибка компиляции Cython "не является допустимым именем модуля"

c:\..\Project\App\Analyzer\ 
_init_.py 
Few_other_files.py 
consolidated_loop_C.pyx 
cl_setup.py 

Вот мой cl_setup.py

from Cython.Build import cythonize 
try: 
    from setuptools import setup 
    from setuptools import Extension 
except ImportError: 
    from distutils.core import setup 
    from distutils.extension import Extension 


setup(
    name = "Consolidated Loop", 
    ext_modules = cythonize("consolidated_loop_C.pyx") 
) 

Я использую ниже заявление для compling в той же папке.

python cl_setup.py build_ext --inplace 

Но я получаю следующую ошибку. я предполагаю, что мне не хватает некоторых параметров для cythonize(), которые пытались исследовать без везения.

enter image description here

+0

Это поднимает тире с вашего пути и жалуется на это (см. Http://stackoverflow.com/questions/32799506/something-wrong-when-i-compile-cython-with-c для той же проблемы). Я не совсем уверен, почему именно он это делает. Простым решением является переименование каталога (но это не совсем правильное решение - вам не нужно это делать). – DavidW

+0

@DavidW Да, вы были правы, это была тире в имени папки. На данный момент я переименовал папку. Благодарю. – PyRaider

ответ

1

Во-первых, изменить свой файл setup.py, чтобы использовать только Distutils

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

setup(
    name = "Consolidated Loop", 
    ext_modules = cythonize("consolidated_loop_C.pyx") 
) 

Это должно облегчить отладку потенциальных repliers.

Тогда из нескольких экспериментов и других SO сообщений Python building cython extension with setup creates subfolder when __init__.py exists и The command `python setup.py build_ext --inplace` always create a new directory

Я предлагаю либо переместить файл Cython в подкаталоге или удалить файл __init__.py. Последняя проблема очень вероятно заставляет Python или Cython угадывать имя модуля текущего каталога, следовательно, проблема с тире. Кроме того, файлы setup.py не могут находиться в каталоге модуля, что может вызвать проблемы.

Если вы намерены распространять или упаковывать свой код, предпочтительнее использовать прежний вариант (чистота перемещения файлов в подкаталоге с его собственным __init__.py и т. Д.). Остальное, просто удалите __init__.py и сделайте. Это создаст с build_ext --inplace локально доступный модуль Python consolidated_loop_C.so.

Смежные вопросы