2011-02-02 2 views
1

Я начал играть с cython на моем компьютере с Windows XP, настроенном на Python 2.6. Я попытался запустить простой пример на сайте Cython, но преобразование примера .pyx-файла сразу же не срабатывает с запутанной ошибкой.Проблема создания программы cython под Windows

.pyx файл

def say_hello_to(name): 
    print("Hello, %s" % name) 

setup.py выглядит

from distutils.core import setup 
from distutils.extension import Extension 
from Cython.Distutils import build_ext 

ext_modules = [Extension("hello", ["hello.pyx"])] 

setup(
    name = 'Hello world app', 
    cmdclass = {'build_ext': build_ext}, 
    ext_modules = ext_modules 
) 

В окне командной строки, я выполнить команду

python setup.py build_ext --inplace 

Обратите внимание, что все это точно что веб-страница говорит делать.

В результате я получаю следующий результат:

сообщение
Error converting Pyrex file to C: 
-------------------------------------------------------- 
... 
def say_hello_to(name): 
        ^
-------------------------------------------------------- 

Ошибка говорит: «Непризнанные символов».

Я пытаюсь использовать тот же пример в ящике Linux, и он отлично работает.

В чем проблема и почему двоеточие помечено как неузнаваемое?

+1

Просто догадаться, но может ли быть проблема с концами линии? Например. если файл имеет окончание строки Unix '\ \ n'', но в Windows он ожидает окончания строки' '\ r \ n'' в Windows? –

+0

Вот и все. Мой редактор окна по умолчанию имеет значение «\ r \ n», но я могу установить его как linux '\ n'. Я снова запустил сборку, и теперь она отлично работает. Спасибо, Томас. Кстати, я бы принял ваш ответ, но я не вижу, как это сделать, когда он находится в части комментария. – sizzzzlerz

+0

Я переписал его как ответ, если вы хотите принять его там ;-) –

ответ

2

(перепроведении в ответ, потому что он, видимо, решил проблему)

Только предположение, но это могло быть проблемы с символами конца строки? Например. если в файле есть Unix '\n' окончания строки, но в Windows ожидается Windows '\r\n' окончания строки?

ОК, так было наоборот. Он ожидает окончания строк '\n', а редактор преобразует их в '\r\n'.

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