У меня есть сценарий cython example1.pyx с различными функциями. Я пытаюсь использовать одну из этих функций в своем скрипте Python. Для этого я просто пытаюсь импортировать функцию из модуля cython следующим образом:
from example1 import myfunction1
Я использую Spyder для запуска своего скрипта Python. Когда я запускаю его, я получаю следующую ошибку
ModuleNotFoundError: No module named 'example1'
по какой-то причине скрипты расширения .pyx не распознаются как модули, которые можно импортировать. Я могу успешно импортировать другие скрипты python, но не везет со скриптами cython .pyx. Оказывается, я не компилировал скрипт python. Я сделал это с помощью следующего сценария:
from setuptools import setup, Extension
import numpy
from Cython.Distutils import build_ext as _build_ext
list_pyx = ['cydtw', 'cygak', 'cycc', 'soft_dtw_fast']
ext = [Extension(
'%s' % s, ['%s.pyx' % s], include_dirs=[numpy.get_include()]
) for s in list_pyx]
setup(
include_dirs=[numpy.get_include()],
ext_modules=ext,
cmdclass = {'build_ext': _build_ext},
)
когда я запустил это, я получил сообщение об ошибке, что мне нужен компилятор Visual C++ 14.0. Если посмотреть на документацию в https://wiki.python.org/moin/WindowsCompilers, Visual Studio 15, которую я установил, уже должна иметь Visual C++ 14.0, так что это сбивает с толку. Итак, я обновил свои инструменты настройки. Избавился от этой ошибки, но оказалось, что я не могу найти путь к файлу C; \ program files \ Microsoft SDKs \ Windows \ v8.1 \ lib. что я вижу, это не так. Вот где я сейчас застрял. Какие-нибудь подсказки?
Я только что загрузил скрипт cython из репозитория. Нужно ли мне скомпилировать его, прежде чем я смогу использовать его в моем скрипте Python? Python не распознает его как модуль, если он не скомпилирован?
Да, смысл Cython в том, что он переводит код на C, что позволяет ему работать быстрее и напрямую обращаться к функциям C. Значит, его нужно скомпилировать. Скорее всего, в репозитории, из которого вы его загрузили, есть инструкции по установке, поэтому вам следует им следовать.
к сожалению, инструкции по установке отсутствуют. поэтому я посмотрел, как компилировать скрипты Cython, и здесь есть хороший учебник:
Я действительно не знаю - я не использую Anaconda, и прошло много времени с тех пор, как я пытался настроить Cython на Windows. Я знаю, это может быть немного сложно ...
Для исправления ужасная ошибка vcvarsall.bat есть эта ссылка: github.com/cython/cython/wiki/CythonExtensionsOnWindows
в ссылке упоминается, что необходимо проверить «общие инструменты для Visual C++» во время установки Visual Studio, чтобы избежать ошибки .bat. У меня уже установлена Visual Studio 15, и я не помню, проверял ли я эту опцию. Тем не менее, мне удалось запустить другой сценарий установки, и у меня возникли следующие проблемы: ошибка: требуется Microsoft Visual C++ 14.0. Это уже идет в комплекте с Visual Studio 15, так что это было неожиданно. Затем я продолжил и обновил библиотеку setuptools. Обошел предыдущую ошибку, но получил ошибку о том, что она не распознает мой путь. Ему нужен C: \ Program Files \ Mircosoft SDKs \ Windows \ v8.1 \ lib '.
У меня v8.1, но без папки lib. Папка lib доступна для v8.1a и v10.0a, но указывает на v8.1. Не уверен, что здесь делать
установочный файл выглядит так: from setuptools import setup, Extension import numpy from Cython.Distutils import build_ext as _build_ext list_pyx = ['cydtw', 'cygak', 'cycc', 'soft_dtw_fast'] ext = [Extension( '%s' % s, ['%s.pyx' % s], include_dirs=[numpy.get_include()] ) for s in list_pyx] setup( include_dirs=[numpy.get_include()], ext_modules=ext, cmdclass = {'build_ext': _build_ext}, )
Пожалуйста, используйте функцию редактировать, чтобы обновить ваше сообщение соответствующей информацией. Также вы можете использовать @username в комментариях, чтобы люди, которым вы отвечаете, были уведомлены (я только что увидел ваш ответ). Пожалуйста, включите исходный код, который вы пытаетесь скомпилировать
@ Адонис. Спасибо. Только что обновил свой пост. На данный момент не могу поделиться кодом, но это всего лишь cython-версия расчета динамического искажения времени.






Удалось решить вопрос. Компилятор Visual C++ не был установлен в Visual Studio 2015.
Чтобы проверить, откройте Visual Studio 15.
Посмотрите на шаблоны в Visual C++.
Я видел инструменты Visual C++ 2015 для рабочего стола Windows, которые нужно было установить.
Сюда входят инструменты и библиотеки для рабочего стола Windows, в том числе компилятор, универсальный CRT и Windows 8.1 SDK. Запускаем установку. Тем временем он попросит вас закрыть визуальную студию.
Смог компилировать скрипты Cython, а также вызывать функции в скрипте в моем проекте Python.
Я бы сказал, что вы должны быть осторожны с совпадением версии вашего компилятора и версии Python. Могут быть проблемы с совместимостью.
Подробная информация о средствах сборки Visual Studio доступна здесь: https://landinghub.visualstudio.com/visual-cpp-build-tools
Для установки пакетов, не являющихся чистыми, или компиляции файла cython или pyrex, подробности с точки зрения совместимости приведены здесь: https://wiki.python.org/moin/WindowsCompilers
так что вам все равно нужно явно использовать этот бит компиляции кода в скрипте, в который вы пытаетесь импортировать модуль cython, или достаточно иметь Visual Studio в вашей системе, а затем команда импорта, которая ранее возвращала ошибку, теперь будет Работа?
У вас есть скомпилировал это, верно?