Ошибка установки пакета 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 ноября.