Примеры Cython не работают

Я попытался запустить примеры на странице:

http://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html#the-basics-of-cython

в Windows 10 с использованием Visual Studio 2017 и python 3.53 x64.

Компиляция прошла нормально. Но когда я пытаюсь импортировать сгенерированный pyd (dll) в Python 3.53 (x64), я получаю сообщение об ошибке.

Сгенерированный файл pyd и остальные файлы находятся в одной папке.

Удалось ли кому-нибудь успешно запустить эти 3 примера в приведенной выше ссылке под Python 3.5 с Visual Studio 2017?

Скопируйте ошибку (всю трассировку) и вставьте в свой вопрос; не зная, какая у вас ошибка, ее трудно отладить.

abarnert 02.05.2018 08:30

import helloworld.cp35-win_amd64 ^ SyntaxError: недопустимый синтаксис

Mikael 02.05.2018 08:34

Пожалуйста, укажите это в своем вопросе, а не в качестве комментария.

abarnert 02.05.2018 08:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
46
1

Ответы 1

Проблема только в том, что вы неправильно импортируете модули.

Так же, как вы используете import spam, а не import spam.py, для модуля Python, вы используете import spam, а не import spam.cp35-win_amd64 для модуля расширения.

Обратите внимание, что пример, на который вы ссылаетесь, делает это так:

>>> import helloworld
Hello World

Если вам интересно, почему вы получили именно ту ошибку, которую сделали: символ - не является частью имени, это арифметический оператор. Итак, вы сказали ему, что хотите импортировать модуль cp35 - win_amd64 из пакета spam, и это сбило с толку синтаксический анализатор, поэтому он дал вам SyntaxError.


Поскольку вы спросили о своем конкретном наборе инструментов: да, все они работают вместе. Фактически, как описано в документации в вики, все установщики Python 3.5 с python.org построены с помощью Visual C++ 14.0, который является компилятором, поставляемым с Visual Studio 2017, и поставляются с distutils, который может автоматически обнаруживать и использовать его. (Если у вас старая версия setuptools - введите pip show setuptools, чтобы узнать, соответствует ли номер версии по крайней мере 34.4.0 - это может вызвать проблемы, но эти проблемы вообще не позволяют компилировать пакеты Cython.)

Спасибо. Ты прав. Сгенерированный файл pyd "helloworld.cp35-win_amd64.pyd" должен храниться без изменений в той же папке. Но при импорте должно быть указано только import helloworld

Mikael 02.05.2018 09:16

Другие вопросы по теме