.equals()
сравнивает данные в классе (при условии, что функция реализована). ==
сравнивает местоположения указателя (расположение объекта в памяти).
==
возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals()
возвращает true, если два объекта содержат одни и те же данные equals()
Versus ==
в Java
Это может вам помочь.
Вы можете использовать easy_install вместо pip, он работает для меня.
Может быть, кому-то может быть интересно, для работы с py2exe я работал для меня. (У меня есть 64-разрядная версия Windows 7 и портативный python 2.7, Visual Studio 2005 Express с Windows SDK для Windows 7 и .NET Framework 4)
set VS90COMNTOOLS=%VS80COMNTOOLS%
, а затем:
python.exe setup.py install
У меня была такая же ошибка (что я считаю глупым и не очень полезным вообще, как сообщения об ошибках) и продолжал испытывать проблемы, несмотря на наличие компилятора C.
Удивительно, что в итоге я работал для меня, просто обновляя pip и setuptools до самой последней версии. Надеюсь, это поможет кому-то еще.
Я хотел запустить pysph в Windows 10 под Python 2.7 и получил vcvarsall.bat не был найден (из distutils)
Мое решение было следующим:
Установить Microsoft Visual C ++ для Python 2.7 (например, предложил @Michael)
В Windows 10 он был установлен (мое имя пользователя - Andreas):
C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0
Установите переменную окружения VS90COMNTOOLS на путь установки Visual C ++ для Python 2.7 (см. Выше путь).
Если он все еще не работает, то modifiy в модуле
C:/Python27/lib/distutils
файл msvc9compiler.py. Найдите в нем функцию find_vcvarsall и выполните следующую модификацию.
Замените строку:
productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
с
productdir = os.path.join(toolsdir)
Здесь находится vcvarsall.bat в моем случае (проверьте, где vcvarsall.bat находится в вашей установке).
%userprofile%\Appdata\Local\Programs\Common
пусто для меня.
– Bryce Guinta
18 November 2016 в 06:01
Самый простой способ решить это в 2016 году - установить Chocolatey, а затем пакет vcpython27
. Open Powershell:
> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y
Посмотрите файл setup.py
пакета, который вы пытаетесь установить. Если это более старый пакет, он может импортировать distutils.core.setup()
, а не setuptools.setup()
.
Я столкнулся с этим (в 2015 году) с комбинацией этих факторов:
distutils.core.setup()
python setup.py build
, а не использовать pip
. Если вы используете недавнюю версию pip, она заставит (monkeypatch) пакет использовать setuptools, даже если его setup.py
призывает к distutils. Однако, если вы не используете pip и вместо этого выполняете python setup.py build
, процесс сборки будет использовать distutils.core.setup()
, который не знает о месте установки компилятора.
Шаг 1. Откройте соответствующую командную строку Visual C ++ 2008
Откройте меню «Пуск» или «Начало» и выполните поиск «32-разрядной командной строки Visual C ++ 2008» (если ваш питон 32 -бит) или «64-битная командная строка Visual C ++ 2008» (если ваш питон 64-разрядный). Запустить его. Командная строка должна указывать Visual C ++ 2008 ... в строке заголовка.
Шаг 2: Установите переменные среды
Установите эти переменные среды в только что открывшейся командной строке.
SET DISTUTILS_USE_SDK=1
SET MSSdk=1
Ссылка http://bugs.python.org/issue23246
Шаг 3: Сборка и установка
cd
к пакету, который вы хотите построить, и запустите python setup.py build
, затем python setup.py install
. Если вы хотите установить в virtualenv, активируйте его перед сборкой.
Я попробовал много решений, но только один работал для меня, установка Microsoft Visual Studio 2008 Express C ++.
Я получил эту проблему с модулем Python 2.7, написанным на C (yEnc, который имеет другие проблемы с MS VS). Обратите внимание, что Python 2.7 построен с версией MS VS 2008, а не с 2010!
Несмотря на то, что он бесплатный, его довольно сложно найти, поскольку MS продвигает VS 2010. Тем не менее официальные очень прямые ссылки MSDN все еще работает: проверьте https://stackoverflow.com/a/15319069/2227298 для ссылок для скачивания.
setuptools
до версии 6.0
или выше с помощью pip install setuptools --upgrade
.
– orlade
6 January 2015 в 08:41
Если вы хотите установить pyodbc в ящик Windows, в котором не установлен , для Visual Studio установлена другая опция - вручную установить pyobbc с использованием двоичного дистрибутива.
особенно полезно, если у вас нет прав администратора на компьютере, с которым вы работаете, и пытаетесь настроить virtualenv .
Шаги:
[python installation directory or virtualenv]\Lib\site-packages
самое быстрое решение:
Если у вас есть python 3.4.x, решение просто установить VC ++ 2010, поскольку оно используется для компиляции.
https: //www.visualstudio.com/en-us/downloads#d-2010-express
моя версия python - MSC v.1600 32 бит (intel)] на win32
отлично работает на Windows8
Я попробовал все вышеперечисленные ответы и нашел, что все они не работают, возможно, я использовал Windows 8 и установил Visual Studio 2012. В этом случае вы это делаете.
Файл vcvarsall.bat
находится здесь: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
Просто выберите файл и скопируйте его.
Затем перейдите в этот каталог: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools
и вставить файл. И тогда все должно быть хорошо.
С Python 3.4 зависимость зависит от Visual Studio 2010. Установка Visual C ++ 2010 Express исправила проблему для меня.
Обманывать его с помощью установок VS 2008 или 2013, которые, как оказалось, не работали.
python.exe
, чтобы отобразить, какая версия VC ++ была скомпилирована (пример показан ниже). Важно использовать соответствующую версию компилятора Visual C ++, с которой был скомпилирован Python, поскольку distilutils get_build_version
предотвращает смешивание версий ( за предупреждение Piotr ). Yellow (top) - это Python 2.7, скомпилированный с MSC v.1500 (Visual Studio C ++ 2008). Red (внизу) - это Python 3.4.1, скомпилированный с MSC v.1600 (Visual Studio C ++ 2010) [/g23] MSC v.1000 -> Visual C++ 4.x
MSC v.1100 -> Visual C++ 5
MSC v.1200 -> Visual C++ 6
MSC v.1300 -> Visual C++ .NET
MSC v.1310 -> Visual C++ .NET 2003
MSC v.1400 -> Visual C++ 2005 (8.0)
MSC v.1500 -> Visual C++ 2008 (9.0)
MSC v.1600 -> Visual C++ 2010 (10.0)
MSC v.1700 -> Visual C++ 2012 (11.0)
MSC v.1800 -> Visual C++ 2013 (12.0)
MSC v.1900 -> Visual C++ 2015 (14.0)
MSC v.1910 -> Visual C++ 2017 (15.0)
Developer Tools >> Visual C++ Compilers
, чтобы сэкономить время и пространство на диске от установки инструментов SDK, которые вам в противном случае не нужны. Согласно @srodriguex , вы можете пропустить ручную загрузку командного файла (шаги 4- 6), вместо этого скопировав несколько пакетных файлов туда, где находится Python, следуя этому ответу . Если это не сработает, выполните следующие шаги, которые изначально работали для меня.
- Откройте
cmd.exe
- До вы пытаетесь установить что-то, что требует расширений C, запустите следующий пакетный файл, чтобы загрузить среду компилятора VC ++ в сеанс (т. е. переменные среды, путь к компилятору и т. д.). Выполнить: 32-разрядные компиляторы: Примечание : 32-разрядные установки Windows будут иметь
C:\Program Files\
как ожидалось"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
64-битные компиляторы:"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"
Примечание : Да , исходные 64-разрядные компиляторы находятся вProgram Files (x86)
. Не спрашивай меня, почему. Кроме того, если вам интересно, какая разница междуvcvars64.bat
иvcvarsx86_amd64.bat
или, что более важно, разница междуamd64
иx86_amd64
, первые предназначены для собственных 64-битных компиляторов, а последние являются 64-разрядными кросс-компиляторы, которые могут запускаться при 32-разрядной установке Windows. Обновление: если по какой-то причине вы получаетеerror: ... was unexpected at this time.
, где...
представляет собой некоторую серию символов, тогда вам нужно проверить, что в переменной пути нет никаких посторонних символов, таких как дополнительные цитаты или бродячие символы. Пакетный файл не сможет обновить ваш путь сеанса, если он не сможет его понять.- Если это пошло хорошо, вы должны получить одно из следующих сообщений в зависимости от какая версия VC ++ и какая команда вы запускали: для 32-разрядных инструментов компилятора:
Setting environment for using Microsoft Visual Studio 20xx x86 tools.
Для 64-битных инструментов компилятора:Setting environment for using Microsoft Visual Studio 20xx x64 tools.
- Теперь запустите установите через
python setup.py install
илиpip install pkg-name
- Надейтесь и перекрестите пальцы, чтобы планеты были правильно выровнены для VC ++.
...\VC\bin\vcvarsamd64.bat
и ...\VC\bin\amd64\vcvarsamd64.bat
.
– Josh Bowden
13 April 2014 в 20:58
Вам понадобится установить компилятор Microsoft, совместимый с компилятором, используемым для создания Python. Это означает, что вам нужен Visual C ++ 2008 (или более новый, с некоторой настройкой ).
Microsoft теперь поставляет компилированный компилятор и заголовки только , чтобы иметь возможность компилировать расширения Python на незабываемый URL:
Компилятор Microsoft Visual C ++ для Python 2.7
Это относительно небольшой пакет; 85 МБ для загрузки, установки без прав администратора, не требуется перезагрузка. Имя немного вводит в заблуждение, компилятор будет работать для любой версии Python, первоначально скомпилированной с Visual C ++ 2008, а не только с Python 2.7.
Если вы запустите интерактивную подсказку Python или распечатаете
sys.version
, найдитеMSC
строка версии; если этоMSC v.1500
, вы можете использовать этот инструмент.Из исходного объявления в список distutils :
Microsoft выпустила компилятор пакет для Python 2.7, чтобы упростить людям сбор и распространение своих модулей расширения C в Windows. Компилятор Microsoft Visual C ++ для Python 2.7 (aka VC9) доступен из: http://aka.ms/vcpython27
Этот пакет содержит все инструменты и заголовки, необходимые для сборки C для Python 2.7 32-разрядных и 64-разрядных (обратите внимание, что некоторые модули расширения требуют сторонних зависимостей, таких как OpenSSL или libxml2, которые не включены). Другие версии Python, созданные с помощью Visual C ++ 2008, также поддерживаются, поэтому «Python 2.7» - это просто реклама - он отлично работает с 2.6 и 3.2.
Обратите внимание, что вам нужно иметь
setuptools
6.0 или новее (перечисленные в системных требованиях на странице загрузки). Проект, который вы устанавливаете, должен использоватьsetuptools.setup()
, а неdistutils
, или автоматическое обнаружение не будет работать.Microsoft заявила, что хочет сохранить стабильный URL-адрес, чтобы автоматические сценарии могли ссылаться это легко.
setuptools
обновлен с pip install setuptools --upgrade
.
– orlade
6 January 2015 в 08:42
setuptools
, а не distutils
. В конце концов, создание модулей - это основная функциональность, и у нее есть соответствующий код, но более старая версия. Похоже, что distutils
сопровождающие просто отказались от поддержки всех возможных вариантов MSSDK и бросили эту работу на своих коллег setuptools
, которые были более нетерпеливы.
– ivan_pozdeev
11 April 2016 в 01:03
setuptools
также может выпускаться гораздо чаще, чем distutils
, включенный в цикл выпуска Python. И distitutils
действительно перешел в режим обслуживания, и работа над новыми системами намечена на его замену. Эта работа застопорилась.
– Martijn Pieters♦
11 April 2016 в 06:26
Является ли Microsoft Visual C ++ Compiler для Python 2.7 на http://www.microsoft.com/en-us/download/details.aspx?id=44266 не решением?
error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
– Bob Stein
20 January 2016 в 13:29
Я не знаю, слишком ли поздно, но я нашел компилятор Microsoft Visual C ++ для Python 2.7 , который читает
Типичное сообщение об ошибке, которое вы получите если вам нужен этот пакет компилятора, не удалось найти vcvarsall.bat
Надеюсь, что это поможет!
Если у вас установлен mingw
pip install --global-option build_ext --global-option --compiler=mingw32 packagename
, принудительное создание пипов с использованием компилятора mingw вместо Microsoft. См. Здесь https://github.com/pypa/pip/issues/18 для получения подробной информации (последняя запись).
Я столкнулся с этой проблемой, когда попытался установить библиотеку numpy на моем python 3.5. Решение заключается в установке VS2015. У меня был VS2008, 2012, 2013, ни один из которых не совместим с python 3.5. По-видимому, более новая версия python зависит от более новых версий VS.
Также убедитесь, что C ++ Common Tools установлены с Visual Studio.
Ответ, заданный @monkey, является одним из правильных, но он неполный.
Если вы хотите использовать MinGW , вы должны выбрать C , C ++, а также другие инструменты разработки, предлагаемые во время процесса установки MinGW, также получить «make.exe.»
. Вы также должны установить путь в make.exe в env.
Чтобы выполнить его ответ, выполните следующие шаги:
C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;
в PATH distutils.cfg
, расположенный в C:\Python26\Lib\distutils\distutils.cfg
, будет: [build]
compiler=mingw32
Убедитесь, что переменные окружения установлены, открыв новый cmd. EXE.
x86_64-w64-mingw32-gcc
и i686-w64-mingw32-gcc
. Эти исполняемые файлы, по-видимому, такие же, как те, которые вы получили из Mingw, как правило, (только что скомпилированные внутри среды Cygwin).
– CMCDragonkai
14 February 2017 в 03:27
Я нашел решение. У меня была такая же проблема, и ошибка, установив «amara».
C:\programs\mingw\
c:\programs\MinGW\bin;
в файл PATH C:\Python26\Lib\distutils\distutils.cfg
, чтобы быть: [build]
compiler=mingw32
easy_install.exe amara
. Убедитесь, что среда установлена, открыв новый cmd.exe
.
C:\msysgit\mingw\mingw32\bin
и C:\msysgit\mingw\bin
к пользователю PATH и перезапустив Spyder перед запуском pip install
снова
– endolith
26 November 2011 в 08:11
gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1
после easy_install.exe amara
– user
17 September 2013 в 14:17
C:\Python27\Lib\distutils\cygwincompiler.py
и удалить из него все экземпляры –mno-cygwin
; это связано с тем, что последние версии GCC удалили опцию –mno-cygwin
, и ее не должно быть.
– Zeinab Abbasimazar
5 May 2014 в 06:55
Ниже были исправлены эта проблема для меня, я пытался создать установку с расширением cython.
#productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
productdir = os.path.join(toolsdir, os.pardir, os.pardir)
Вышеупомянутые шаги исправили проблему для меня.
У меня есть python 2.73 и windows 7. Решение, которое сработало для меня, было:
C:\programs\mingw\bin;
C:\Python27\Lib\distutils\distutils.cfg
, содержащий: [build]
compiler=mingw32
Чтобы иметь дело с MinGW, который больше не распознает флаг -mno-cygwin, удалите флаг в C: \ Python27 \ Lib \ distutils \ cygwincompiler.py с 322 по 326, поэтому он выглядит так:
self.set_executables(compiler='gcc -O -Wall',
compiler_so='gcc -mdll -O -Wall',
compiler_cxx='g++ -O -Wall',
linker_exe='gcc',
linker_so='%s %s %s'
% (self.linker_dll, shared_option,
entry_point))
Вы можете установить скомпилированную версию из http://www.lfd.uci.edu/~gohlke/pythonlibs/
easy_install binary_installer_built_with_distutils.exe
в virtualenv, используя этот ответ .
– yangzh
7 September 2013 в 05:32
wheel convert ....exe
установить этих установщиков, а затем установить их с помощью пипа, когда захотите.
– Zooba
29 September 2014 в 23:27
python -m pip install <filename>
– arun
3 May 2016 в 18:54
У меня такая же проблема и я решил на данный момент.
«Google» сказал мне, что мне нужно установить «Microsoft Visual C ++ Compiler for Python 2.7». Я устанавливаю не только инструмент, но и Visual C ++ 2008 Reditributable, но это не помогло. Затем я попытался установить Visual C ++ 2008 Express Edition. И проблема ушла!
Просто попробуйте установить Visual C ++ 2008 Express Edition!
Похоже, что он ищет компиляторы VC, поэтому вы можете попытаться указать тип компилятора с -c mingw32
, так как у вас есть msys
python setup.py install -c mingw32
python setup.py build --compiler=mingw32
, а затем python setup.py install
– Emil Stenström
12 June 2012 в 22:13
У меня была эта проблема с использованием Python 3.4.1 на Windows 7 x64, и, к сожалению, у пакетов, которые мне были нужны, не было подходящих exe или колес, которые я мог бы использовать. Эта система требует нескольких «обходных решений», которые подробно описаны ниже (и TLDR внизу).
Используя информацию в ответ Jaxrtech выше , я решил, что мне нужна Visual Studio C ++ 2010 (sys.version return MSC v.1600), поэтому я установил Visual C ++ 2010 Express из ссылки в его ответе, который является http://go.microsoft.com/?linkid=9709949 . Я установил все с обновлениями, но, как вы можете прочитать ниже, это было ошибкой. В это время должна быть установлена только оригинальная версия Express (ничего не обновлено).
vcvarsall.bat теперь присутствовал, но при установке пакета появилась query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']
новая ошибка. С этой ошибкой возникают другие проблемы с stackoverflow, такие как Ошибки при сборке / установке модуля C для Python 2.7
. Я определил из этого ответа, что Express Express только устанавливает 32-разрядные компиляторы. Чтобы получить 64-битные (и другие) компиляторы, вам необходимо установить Windows 7.1 SDK. См. http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
Это не будет меня устанавливать, и установщик вернул ошибку installation failed with return code 5100
. Я нашел решение по следующей ссылке: http://support.microsoft.com/kb/2717426 . Короче говоря, если установлены более новые версии x86 и x64 Microsoft Visual C ++ 2010 Redistributable, они конфликтуют с установщиками SDK и требуют деинсталляции.
Затем был установлен SDK, но я заметил vcvars64.bat все еще не существовало в C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
, а также в его подпапках. vcvarsall.bat запускает командный файл vcvars64, поэтому без него пакет python все равно не будет установлен (я забыл ошибку, которая была показана в это время).
Затем я нашел несколько инструкций здесь: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Следуя инструкциям, я уже установил Express и 7.1 SDK, поэтому установил SDK 7.1 SP1 и пропустил заголовок исправление файла. Затем я вручную создал vcvars64.bat с контентом CALL setenv /x64
. Я вставляю все эти инструкции здесь, поэтому они не теряются.
Шаг 1 - загрузить Visual Studio Express 2010.
http: // www.microsoft.com/visualstudio/en-us/products/2010-editions/express - это хорошее место для начала. Загрузите программу установки и запустите ее (vc_web.exe). Вам не нужна дополнительная загрузка SQL 2008.
Вам также понадобится Windows SDK (в настоящее время 7.1) для 64-разрядных компиляторов - если вы не хотите создавать только 32-битные сборки, которые не полностью поддерживается ...
http://www.microsoft.com/en-us/download/details.aspx?id=8279 является хорошей отправной точкой для загрузки это - вы захотите запустить winsdk_web.exe при загрузке!
Установка по умолчанию здесь прекрасна.
Наконец, загрузите и установите обновление Windows SDK 7.1 SP1: http://www.microsoft.com/en-us/download/details.aspx?id=4422
И, чтобы исправить недостающий файл заголовка, VS2010 SP1. http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5
И, черт возьми, исправьте отсутствующий пакетный файл для VS2010 Express.
В C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 создайте «vcvars64.bat» со следующим (вам нужно будет запускать как администратор):
CALL setenv / x64
Мой пакет python по-прежнему не установлен (не может вызвать ошибку). Затем я нашел некоторые инструкции (скопированные ниже) для использования специальной командной строки SDK 7.1, см.: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html
Не обращайте внимания на этот вопрос. Кто-то здесь заметил этот пункт в меню: Пуск-> Все программы-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Командная строка
Выполняет пакетное задание, которое, как представляется, настраивает рабочую среду для компилятор. Из этого приглашения вы можете ввести «setup.py build» или «setup.py install».
Я открыл командную строку Windows SDK 7.1 в соответствии с инструкциями и использовал ее для запуска easy_install на пакет python. И наконец, успех!
TLDR;
- Установите Visual Studio Express 2010 (желательно без обновленных распространяемых или SQL-серверов).
- Установите Windows 7.1 SDK
- Обновление Instal SDK 7.1 SP1 и исправление файла заголовка VS2010 SP1 (этот шаг может не потребоваться).
- Вручную создайте
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat
с контентомCALL setenv /x64
- Пуск-> Все программы-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Командная строка для открытия специальной командной строки x64, которая затем может использоваться с python / easy_install / pip / etc (в том числе в virtual_envs).
setuptools
до версии 6.0
или выше с помощью pip install setuptools --upgrade
.
– orlade
6 January 2015 в 08:41
error: Setup script exited with error: Unable to find vcvarsall.bat
– Stephan Schielke 30 October 2015 в 17:16