Строительство LXML для Python 2.7 на окнах
-
27-09-2019 - |
Вопрос
Я пытаюсь построить LXML для Python 2.7 на Windows 64-битную машину. Я не мог найти яйцо LXML для версии Python 2.7. Так что я составляю его из источников. Я следую инструкциям на этом сайте
при статическом секции связывания. Я получаю ошибку
C:\Documents and Settings\Administrator\Desktop\lxmlpackage\lxml-2.2.6\lxml-2.2.
6>python setup.py bdist_wininst --static
Building lxml version 2.2.6.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' need
s to be available.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.
** make sure the development packages of libxml2 and libxslt are installed **
Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
..\libxml2-2.7.6--win32--w2k--x64\lib
..\libxslt-1.1.26--win32--w2k--x64--0002\lib
..\zlib-1.2.4--win32--w2k--x64
..\iconv-1.9.1--win32--w2k--x64-0001\lib
running bdist_wininst
running build
running build_py
running build_ext
building 'lxml.etree' extension
error: Unable to find vcvarsall.bat
Кто-нибудь может мне с этим помочь? Я попробовал настроить путь, чтобы Microsoft Visual Studio. Я могу запустить vcvarsall.bat из командной линии .. Но Python испытывает проблемы
Решение
Могу поспорить, вы не используете VS 2008 для этого :)
Есть def find_vcvarsall (версия): Функция (Угадай, что, ищет vcvarsall.bat) в Distutils со следующим комментарием
Сначала он пытается найти ПродуктРеджир VS 2008 в реестре. Если это не удается вернуться к VS90Comntools Env var.
Если вы не используете VS 2008, то у вас нет ни ключа реестра, ни подходящей переменной среды, и именно поэтому Distutils не могут найти файл vcvarsall.bat. Оно делает нет Проверьте, можно ли файл Bat Bat через переменную среды пути.
Решение состоит в том, чтобы определить переменную VS90Comntools, чтобы указать на справочник инструментов Visual Studio.
Это сказал, посмотрите на 11.4. Distutils.msvccompiler - Microsoft Compiler раздел в документах Python, которые состояния
Как правило, модули расширения должны быть скомпилированы с тем же компилятором, который использовался для компиляции Python.
Martin v. Loewis в электронном письме под названием Скачать Visual Studio Express 2008 сейчас На списке рассылки Python-List говорится о том же
Python 2.6, 2.7 и 3.1 все встроены в этот выпуск (т.е. 2008). Из-за другой длинной традиции модули расширения Python должны быть построены с той же версией компилятора (более конкретно, CRT-версию) в качестве самого Python. Поэтому для создания модулей расширения для любых из этих выпусков необходимо иметь копию VS 2008 или VS 2008 Express.
В свете выше утверждений вы должен Используйте VS 2008, если вы хотите построить LXML для Python 2.7, поэтому, хотя настройка VS90Comntools позаботится о нахождении файла vcvarsall.bat Это не то решение.
Это называется :) Люди пытаются использовать более старый CRT с более новым компилятором:
Могу ли я использовать компилятор Visual Studio 2010 C ++ с библиотекой Runtime C ++ C ++ Visual Studio 2008?
Как принять компилятор C ++ для использования конкретной версии CRT?
VS 2008 - Ссылка против старого времени выполнения C
Я хотел бы поблагодарить Кева Дуйер (за то, что указывает на важность версии VS, которая используется) и Стефан Бернел (за то, что указывает на том, чтобы указывать на то, чтобы указать, как место, посвященное конфигурации компилятора) в потоке Проблема здания LXML под Windows - ошибка: невозможно найти vcvarsall.bat на списке рассылки LXML. Я хотел бы также поблагодарить Агронхольм Из Freeenode #Distutils канал IRC для подтверждения того, что Distutils содержит код, который ищет файл vcvarsall.bat.
Другие советы
После последующего рекомендуемого решения:
- загрузка Vcforpython27.msi. от Microsoft,
- Установка его (Win7, Python (X, Y) 2.7.9 32bit),
- Ввод / обновление переменной окружающей среды Vs90comntools. к значению каталога установки (C: Файлы программы (x86) Общие файлы Microsoft Visual C ++ для Python 9.0)
Моя проблема все еще существовала (хочу построить расширение Python в C).
Я должен был сделать следующие 2 невероятно грязные настройки, прежде чем все сейчас работает:
- модифицировать "msvc9compiler.py" в "C: python27 lib distutils", функция find_vcvarsall., чтобы сейчас указать "Visual C ++ для Python" вместо "VC".
- Скопируйте основатель каталогов под «C: Program Files (x86) Общие файлы Microsoft Visual C ++ для Python 9.0 " к «C: Program Files (x86) Общие файлы Microsoft Visual C ++ для Python " (то есть один уровень дир).
Я не могу сказать, кто сделал что-то не так - наверное, я.
РЕДАКТИРОВАТЬ. Перемещение каталогов работает из-за проблемы, описанной в Эта ошибка INTUTILS.
Даже если VS90Comntools установлен, MSVC9Compiler не сможет найти vcvarsall.bat, потому что он установлен в
%installdir%/vcvarsall.bat
и нет%installdir%/VC/vcvarsall.bat
Описанный обходной путь использует командную строку Visual C ++:
Введите MSVC для командной строки Python
Set distutils_use_sdk = 1
Установить MSSDK = 1
Python.exe Setup.py ...
Jorj Mckie была почти правильной: действительно установка Vcforpython27.msi. Недостаточно, и да, есть проблема в дистанции, которая мешает ему найти Find_vcvarsall. На самом деле вопрос не находится непосредственно в дистутах, но в том, как VCFORPYTHON27.MSi был упакован и где VCVarsall.Bat размещен (макет папок отличается от VS2008 SDK).
Тем временем простой обходной путь это получает исчезнутую, возможно, в Python 2.7.11: Используйте SetUpeWools вместо динутами.
Еще один ручной обходной путь, если вы застряли с Intutils:
1) Enter MSVC for Python command prompt
2) SET DISTUTILS_USE_SDK=1
3) SET MSSdk=1
4) you can then build your C extensions: python.exe setup.py ...
Отчет об ошибках и обходной путь Gregory Szorc:http://bugs.cython.org/issue23246.
Дополнительная информация и обходной путь для использования %% Cython Magic Inpython: https://github.com/cython/cython/wiki/cythonextensionsonwindows.
https://github.com/develersrl/gccwinbinaries
У меня были подобные проблемы. Это работало мгновенно без чего-либо, кроме использования мастера установки и настроить одно предпочтение.