Вопрос

Я пытаюсь построить LXML для Python 2.7 на Windows 64-битную машину. Я не мог найти яйцо LXML для версии Python 2.7. Так что я составляю его из источников. Я следую инструкциям на этом сайте

http://lxml.de/build.html.

при статическом секции связывания. Я получаю ошибку

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.

Другие советы

После последующего рекомендуемого решения:

  1. загрузка Vcforpython27.msi. от Microsoft,
  2. Установка его (Win7, Python (X, Y) 2.7.9 32bit),
  3. Ввод / обновление переменной окружающей среды Vs90comntools. к значению каталога установки (C: Файлы программы (x86) Общие файлы Microsoft Visual C ++ для Python 9.0)

Моя проблема все еще существовала (хочу построить расширение Python в C).

Я должен был сделать следующие 2 невероятно грязные настройки, прежде чем все сейчас работает:

  1. модифицировать "msvc9compiler.py" в "C: python27 lib distutils", функция find_vcvarsall., чтобы сейчас указать "Visual C ++ для Python" вместо "VC".
  2. Скопируйте основатель каталогов под «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 ++:

  1. Введите MSVC для командной строки Python

  2. Set distutils_use_sdk = 1

  3. Установить MSSDK = 1

  4. 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

У меня были подобные проблемы. Это работало мгновенно без чего-либо, кроме использования мастера установки и настроить одно предпочтение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top