Ошибка установки пакета Python

Не совсем с программированием, но с ошибкой, с которой я сталкиваюсь при попытке установить пакет python с помощью python setup.py install.

Я скачал файл tar для пакета PyML. Затем после извлечения я сделал следующие шаги:

В командной строке DOS установите переменную, как показано ниже:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

Перейдите в каталог с setup.py в извлеченной папке PyML и запустите:

python setup.py build

python setup.py install

Но на обоих шагах я получаю ошибки, как показано ниже, связанные с ext/hash_map, такой файл не найден.

C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ INCLUDE \ xlocale (336): предупреждение C4530: обработчик исключений C++ используется, но семантика разматывания не включена. S pecify / EHsc

e: \ ajit \ pyml-0.7.13.tar \ dist \ pyml-0.7.13 \ pyml \ Containers\ext\SparseDataSet.h(14): фатальная ошибка C1083: невозможно открыть файл включения: 'ext/hash_map': нет такой файл или каталог

ошибка: команда '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.e xe" "завершилась неудачно с состоянием выхода 2

Что мне не хватает? Как устранить эту ошибку и установить PyML.

Версия Python: 2.7.5 MSC v.1500 32 бит (Intel)] на win32 на компьютере с Windows 8.

Версия PyML:0.7.13

1 ответ

Во-первых, рекомендуется использовать тот же компилятор, который использовался для сборки двоичных файлов Python, а именно VS8:

Python 2.6, 2.7 и 3.1 все собраны с этим выпуском (то есть 2008). По другой давней традиции модули расширения Python должны быть собраны с той же версией компилятора (точнее, с версией CRT), что и сам Python. Поэтому для создания модулей расширения для любого из этих выпусков вам необходимо иметь копию VS 2008 или VS 2008 Express.

Поэтому, вероятно, ваш следующий вопрос будет следующим: "Как заставить компилятор C++ использовать конкретную версию CRT?"

Во-вторых, это не решение в вашем случае, поскольку существует другой синтаксис, включающий библиотеки tr1 в gcc и msvs, см. Этот вопрос, например. Вместо # include <ext/hash_map> для MSVS это должно быть # include <hash_map>, Если вы настаиваете на использовании MSVS, вы, вероятно, в конечном итоге измените код PyML.

Вероятно, вы можете переключиться на использование MinGW, вот пошаговое руководство, хотя я не проверял, можно ли построить PyML таким способом. Не смогу сделать это раньше, чем 14 ноября.

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