2013-05-14 3 views

ответ

12

Установка распространяемого пакета Microsoft Visual C++ 2008 недостаточно для компиляции пакетов. Вам нужно установить компилятор , а не только файлы поддержки.

Есть три способа сделать это:

  1. Установка Visual C++.
  2. Используйте mingw-порт gcc вместо Visual C++.
  3. Используйте порт cygwin gcc вместо этого, а cygwin построит на Python вместо собственного.

Если вы хотите, чтобы пойти с вариантом 1, необходимо установить Visual C++ сам. Бесплатная версия должна работать так же хорошо, как и платная версия, если вы не собираетесь создавать бинарные пакеты для перераспределения другим. К сожалению, я не уверен, где найти версию 2008 года. По состоянию на май 2013 года, the download page имеет только 2010 и 2012

При установке этого, он будет создать пакетный файл с именем vcvarsall.bat (не vcvarshall.bat!), И даст вам возможность положить, что пакетный файл в PATH. Запуск этого командного файла устанавливает приглашение DOS для создания с этой версией Visual C++. (Это удобно, если у вас несколько версий Visual C++ или других компиляторов). Если вы пропустите этот параметр, вам придется делать это вручную.

This question показывает, как использовать новую Visual Studio с более старым Python, а также показывает, как указать Distutils на vcvarsall.bat, что не находится на вашем пути, и есть ссылки на целом много других соответствующих вопросов и сообщений в блоге.


Многие люди находят вариант 2 более простым. Установите mingw, измените свой PATH в среде, включив в него C:\MinGW\bin (или там, где вы решили установить его), и передайте -c mingw32 всякий раз, когда вы запускаете сценарий setup.py.

Проблема заключается в том, что не так четко документировано, как сообщить easy_install и pip, чтобы использовать mingw вместо VC++. Для этого вам нужно найти или создать файл distutils.cfg, найти или создать в нем раздел [build] и добавить compiler=mingw32. Не слишком сложно. This blog post выглядит так, как будто это хорошо объясняет, или см. this answer.


Вариант 3 на сегодняшний день является самым простым. Установите cygwin, скажите, чтобы установить пакеты Python и gcc, и все готово.

Проблема в том, что у вас нет собственного Windows Python, у вас есть Unix Python, запущенный в поддельной среде Unix поверх Windows. Если вам нравится Cygwin, вам это понравится; в противном случае вы не будете.

+0

Спасибо. Я пошел на вариант 2 и добрался до того, как попытался установить «pip.exe install cython». Однако я получаю сообщение об ошибке «C: \ MinGW \ bin \ gcc.exe -mno-cygwin -mdll -O -Wall -IC: \ Python27 \ include -IC: \ Pytho n27 \ PC -cc: \ users \ marshall \ appdata \ local \ temp \ pip-build-clifford \ cython \ Cython \ Plex \ Scanners.c -oc: \ users \ marshall \ appdata \ local \ temp \ pip-build-marshall \ cython \ cython \ plex \ scanners. o gcc: ошибка: непризнанная опция командной строки '-mno-cygwin' ошибка: команда 'gcc' не удалась с статусом выхода 1 " – marshall

+0

Очевидно, что это проблема в python, так как gcc 4.7.0 удалил эту опцию. Ответ заключается в том, чтобы отредактировать файл C: \ Python27 \ Lib \ distutils \ cygwinccompiler.py и просто удалить параметр -mno-cygwin везде, где вы его видите. – marshall

+1

Веб-установщик для Visual C++ 2008 express можно найти здесь: http://go.microsoft.com/?linkid=7729279 - пока что. – mwotton

4

Вы получите такую ​​ошибку только для пакетов (или одной из зависимостей пакета), которая имеет расширения CPython. Пип внутренне:

  • загружает по источникам
  • пробегов distutilspython setup install
  • install готовит установочные файлы и пытается построить CPython расширения в windows среде
  • окна среды вызовы MS Visual Studio vcvarsall.bat скрипт, который расстановок переменные окружения DOS для включения компилятора MS Visual Studio C в оболочку
  • если vcvarsall.bat не найден - вы будете g и др это сообщение

Обычное решение

Для питона библиотек, которые имеют CPython расширения, портативны на окнах, обычно имеют окна двоичный пакет, которые можно загрузить с PyPi или библиотеки веб-сайта.

В таких случаях более подходящим (и безболезненным) является установка библиотеки путем загрузки и запуска оконного бинарного пакета.

Существует запрос функции для pip - Add support for installation of binary distutils packages on Windows.

Новый способ сделать это - колеса

Благодаря комментарий от @ Warren-р: , что функция запроса была superseeded поддержкой Wheels в ПГИ.

Официальное описание: Колесо представляет собой архив в формате ZIP со специально отформатированным именем файла и расширением .whl.

Как я понял, если есть окна бинарный пакет с расширением .whl затем начните с установки колеса первой:

# Make sure you have the latest pip that supports wheel 
pip install --upgrade pip 
pip install wheel 

, а затем установить .whl так:

pip install full-path-or-url-to-your-library.whl 

Ссылки :

+0

Этот запрос функции был заменен поддержкой колес в PIP. http://pythonwheels.com/ –

Смежные вопросы