Подтвердить что ты не робот

Pyodbc и python 3.4 в Windows

pyodbc - очень приятная вещь, но установщики Windows работают только с их конкретной версией python. С выпуском Python 3.4 только доступные установщики просто останавливаются, как только они не видят 3.3 в реестре (хотя 3.4, конечно, есть).

Копирование файлов .pyd и .egg-info из установки 3.3 в каталог 3.4 пакетов сайтов не похоже на трюк. При импорте pyodbc вызывается ImportError: ImportError: DLL load failed: %1 is not a valid Win32 application.

Есть ли секретный соус, который можно добавить, чтобы файл 3.3 работал правильно? Или нам просто нужно дождаться версии установщика 3.4?

4b9b3361

Ответ 1

Различные версии Python (по большей части) не являются бинарно-совместимыми, и поэтому любые скомпилированные расширения (например, pyodbc) будут работать только для определенной версии.

Обратите внимание, что пакеты pure-Python (те, которые полностью написаны на Python и не имеют зависимостей от не-Python) не нужно компилировать и, таким образом, могут быть написаны для поддержки нескольких версий Python.

Также обратите внимание, что технически возможно, чтобы скомпилированное расширение было написано так, что оно работает для Python 3.2, а также 3.3, 3.4 и будущего 3.x, но они должны ограничиться "stable ABI" , как указано PEP 384, и большинство расширения не делают этого. Насколько я знаю, pyodbc не ограничивается стабильным ABI и должен быть скомпилирован отдельно для каждой версии Python.

Тем не менее, можно также скомпилировать собственную версию pyodbc из исходного кода, если у вас есть необходимые инструменты и знания. (Но я предполагаю, что если вы задаете этот вопрос, вы этого не сделаете. Я тоже этого не делаю, иначе я бы добавил несколько советов в этот ответ.)

Как вы уже прокомментировали, pypyodbc может быть вашим лучшим выбором, так как это пакет pure-Python.

Установка pypyodbc может быть выполнена через командную строку:

C:\Python34\Scripts>pip install pypyodbc

Использование его в качестве замещающей замены pyobbc может быть выполнено с помощью:

import pypyodbc as pyodbc

[Текущая версия pyodbc во время этого редактирования 3.0.10, и она поддерживает Python 3.4. Конечно, все еще полезно знать pypyodbc в случае, если pyodbc отстает снова, когда выпущены будущие версии Python.]

Ответ 2

Вы пытались скачать с здесь? Он имеет неофициальную сборку для 3.4. Я сам сделал быстрый тест, похоже, что он отлично работает для меня.

Ответ 3

Я установил это, установив pyodbc 3.0.10. Последняя версия pyodbc не работала в Windows с Python 3.4

Однако pyodbc 3.0.10 действительно работал у меня

Установите команду в командной строке: pip install pyodbc 3.0.10