pip install mysqlclient возвращает "фатальная ошибка C1083: невозможно открыть файл:" mysql.h ": нет такого файла или каталога

Вот эта проблема: я пытаюсь установить mysqlclient так

C:\Users\amccommon349> pip install mysqlclient Сбор mysqlclient с использованием кэшированного https://files.pythonhosted.org/packages/ec/fd/83329b9d3e14f7344d1 cb31f128e6dbba70c5975c9e57896815d.13l.gif.gif.gt.dll

Установка собранных пакетов: mysqlclient

Запуск setup.py install для mysqlclient... ошибка

Complete output from command c:\users\amccommon349\appdata\local\programs\python\python36\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\AMCCOM~1\\AppData\\Local\\Temp\\pip-install-qcgo48hf\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\AMCCOM~1\AppData\Local\Temp\pip-record-q4yoftj8\install-record.txt --single-version-externally-managed --compile:

c:\users\amccommon349\appdata\local\Programs\python\python36\lib\distutils\d ist.py:261: предупреждение пользователя: неизвестный параметр распространения: тип long_description_content_

  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
copying _mysql_exceptions.py -> build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\__init__.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\compat.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\connections.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\converters.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\cursors.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\release.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\times.py -> build\lib.win-amd64-3.6\MySQLdb
creating build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\__init__.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CR.py -> build\lib.win-amd64-3.6\MySQLdb\constants

copying MySQLdb\constants\ER.py -> build\lib.win-amd64-3.6\MySQLdb\constants

copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\FLAG.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\REFRESH.py -> build\lib.win-amd64-3.6\MySQLdb\constants

работает build_ext

building '_mysql' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\cl.exe /c/nologo/Ox /W3 /GL /DNDEBUG /MD -Dversion_info=(1,3,13,'final',0) -D__version__=1.3.13 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include" -Ic:\users\amccommon349\appdata\local\programs\python\python36\include -Ic:\users\amccommon349\appdata\local\programs\python\python36\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\ProgramFiles (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" /Tc_mysql.c /Fobuild\temp.win-amd64-3.6\Release\_mysql.obj /Zl
_mysql.c
_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

Я позаботился о том, чтобы у меня были все файлы, необходимые для инструментов сборки visual studios, я скачал соединитель mysql-python и обновил мои pip и инструменты настройки. Я - полный новичок в этом и был бы признателен за любую информацию о том, как исправить эту ошибку.

Ответы

Ответ 1

Вы можете скачать неофициальные двоичные файлы Windows для вашей версии Python, используя https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient. Затем установите его с помощью pip. Таким образом, вы сможете избежать хлопот, связанных с визуальными инструментами для сборки студии.

Просто скачайте наиболее подходящий для вас файл mysqlclient.whl. Я думаю, что в вашем случае это будет

mysqlclient‑1.3.13‑cp36‑cp36m‑win_amd64.whl

и запустить

pip install "path to the downloaded .whl file"

Ответ 2

Эта ошибка возникает при попытке установить mysqlclient для python32 в 64-разрядных средах. Удалите python и переустановите 64-битную версию. Затем pip install mysqlclient будет работать без ошибок.

Ответ 3

Это проблема с 64-битной версией python для Windows 10. Следующее исправило эту проблему для меня.

  1. Установите 32-битную версию Python для Windows (в настоящее время версия 3.7.1)
  2. Установите визуальные инструменты для сборки студии https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017 для C++
  3. Установите 32-разрядный соединитель mysql версии 6.1.11 из https://downloads.mysql.com/archives/c-c/

После этого я смог установить mysqlclient с pip install mysqlclient.

Надеюсь, кто-то найдет лучшее решение, которое не требует понижения до 32 бит, потому что это не хорошее решение, оно просто работает. Я нашел способ обойти проблему mysql, но столкнулся с проблемой снова при попытке установить каналы. Кажется, что Python 64-битный ищет 32-битные библиотеки вместо 64-битных библиотек в Windows. До сих пор это решение решило все мои проблемы сборки Python на Windows.

Ответ 4

Ну, наверное, это одна из самых глупых ошибок, которые я когда-либо видел.
У меня есть Python 3.7.3 32bit вместе с последней версией pip3, и я устанавливал колеса на свой Python.... и я наткнулся на эту ошибку STUPID....
Возможно, моя ситуация немного отличается, но вы можете решить ее, просто внимательно посмотрев на ошибку.... сначала кажется, что чего-то не хватает, и вы начинаете обвинять вас, Windows, 32/64bit, и список можно продолжать и продолжать...
Сделайте шаг назад... просто сделайте шаг назад и просто прочитайте неприятное красное сообщение об ошибке... прочитайте его очень хорошо.
В моем случае это было

ERROR: Command errored out with exit status 1:
     command: 'c:\users\myUserName\appdata\local\programs\python\python37-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"'; __file__='"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\MASTER~1\AppData\Local\Temp\pip-record-z1mvci5v\install-record.txt' --single-version-externally-managed --compile
         cwd: C:\Users\MASTER~1\AppData\Local\Temp\pip-install-z7x81g2q\mysqlclient\
    Complete output (30 lines):
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.7
    creating build\lib.win32-3.7\MySQLdb
    copying MySQLdb\__init__.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\_exceptions.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\compat.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\connections.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\converters.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\cursors.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\release.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\times.py -> build\lib.win32-3.7\MySQLdb
    creating build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\__init__.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CR.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\ER.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.7\MySQLdb\constants
    running build_ext
    building 'MySQLdb._mysql' extension
    creating build\temp.win32-3.7
    creating build\temp.win32-3.7\Release
    creating build\temp.win32-3.7\Release\MySQLdb
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -Dversion_info=(1,4,2,'post',1) -D__version__=1.4.2.post1 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -Ic:\users\MyUserName\appdata\local\programs\python\python37-32\include -Ic:\users\MyUserName\appdata\local\programs\python\python37-32\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt" /TcMySQLdb/_mysql.c /Fobuild\temp.win32-3.7\Release\MySQLdb/_mysql.obj /Zl /D_CRT_SECURE_NO_WARNINGS
    _mysql.c
    MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.21.27702\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\MyUserName\appdata\local\programs\python\python37-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"'; __file__='"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\MASTER~1\AppData\Local\Temp\pip-record-z1mvci5v\install-record.txt' --single-version-externally-managed --compile Check the logs for full command output.

Вы прочитали это хорошо?... я предполагаю, что у вас есть все... инструменты сборки, MySQL Connector C 6.1... вы даже переместили его в Program Files (x86)... ну и что там не так...??...
Теперь присмотритесь

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -Dversion_info=(1,4,2,'post',1) -D__version__=1.4.2.post1 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -

Я почти уверен, что вы видели это... ВСЕ ЕЩЕ?.... позвольте мне выделить это для вас

"-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -

MariaDB
Ну, это не может быть глупее, чем это... установщик ищет, что mariadb включает в себя и более поздние библиотеки. Просто зайдите на сайт mariadb, скачайте разъем MariaDB C/C++ и установите его...
Ну, это еще не конец.. Перейдите в C:\Program Files (x86)\MySQL\MySQL, Connector C 6.1 \, включите и создайте папку mariadb... и скопируйте и вставьте содержимое из папки подключения установки mariaDb include
опять не идите... зайдите в C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib и снова выполните ту же самую операцию для папки lib
так что вы должны иметь

C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb  

C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\mariadb  

Теперь нажмите pip3 install mysqlclient
и наслаждайтесь установкой без ворчания... конец

Successfully installed mysqlclient-1.4.2.post1

Ответ 5

У меня была эта проблема (точно такая же ошибка), и я попробовал все решения, упомянутые выше, и ни одно из них не сработало (по крайней мере, для меня), на самом деле я собирался решить эту проблему, пока не нашел решение очень странным, простой и глупый способ !! ,

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

Сначала я установил MySQL Connector/C отсюда

Второй (после завершения установки) я скопировал папку MySQL Connector C 6.1 из Program files/MySQL в Program files (x86)/MySQL

обратите внимание, что вам, возможно, придется создать папку MySQL если она не существует в Program files (x86) (она не существует для меня)

Как бы просто это ни было, это работает для меня, кажется, что для некоторых (или всех) 64-битных окон, pip или, более вероятно, mysqlclient установки mysqlclient ищет в Program files (x86) mysqlclient Program files (x86) некоторые файлы MySQL (например, "mysql.h"). ) и не ищет Program files и, поскольку ничего не находит в Program files (x86) выдает ошибку очень глупо !!! не так ли

Ответ 6

Потраченный впустую много времени, чтобы решить эту ошибку, я нашел решение, которое работало для меня по крайней мере.

Когда я пытался установить MYSQL Client

pip install mysqlclient

1-я ошибка

MySQLdb/_mysql.c(29): фатальная ошибка C1083: не удается открыть включаемый файл: "mysql.h": такого файла или каталога нет


А также попытался установить Django Channels

pip install -U channels

2-я ошибка

ошибка: требуется Microsoft Visual C++ 14.0. Получите его с помощью "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/

Загрузить инструменты сборки: инструменты сборки Microsoft

Переполнение стека: как установить/выбрать необходимые инструменты сборки

Установленные инструменты сборки. (Счастливого кодирования)


Решение @Ralph Ritoch помогло мне и другим, кто получил ошибку Mysql Client.

Но я также установил Django Channels, поэтому я выполнил следующие действия

Следуй этим шагам

  1. Windows 10 64 бит
  2. Python 64 бит 3.7.3
  3. MySQL-разъем-с-6.1.11-winx64
  4. Инструменты сборки

Я также установил Django Channels 2.2.0 и не получаю никаких ошибок.

Successfully installed mysqlclient


(Заметка)

Коннектор MySQL уже установлен в каталог x86

Скопируйте каталог c:\Program Files\MySQL\MySQL Connector C 6.0.2\в папку c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

Поэтому я не изменил каталог MySQL, Connector. (Вы также можете проверить это)

Может быть, работа для вас!

Другое решение Stack для изменения каталога


Возможные причины

Почему мы получаем ошибки.

  1. 32-битная версия Python
  2. MySQL, Connector 32/64 битная версия
  3. Проблема с каталогом
  4. Версия Windows 32/64 бит
  5. Инструменты сборки не установлены (если требуется Microsoft Visual C++ 14.0)

Спасибо всем, кто разместил свое решение.

Ответ 7

Я пытался сделать то же самое для проекта Django. Я пытался использовать:
pip install mysql-python
который дал мне следующую ошибку: 'mysql.h': No such file or directory.
После возни с reuqirements.txt, который дал мне еще одну ошибку

  Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB) 
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last): 
      File "<string>", line 1, in <module> 
      File "/tmp/pip-install-43_6cfva/MySQL-python/setup.py", line 13, in <module> 
        from setup_posix import get_config 
      File "/tmp/pip-install-43_6cfva/MySQL-python/setup_posix.py", line 2, in <module> 
        from ConfigParser import SafeConfigParser 
    ModuleNotFoundError: No module named 'ConfigParser' 

Наконец, использование этого сработало для меня: pip install mysql-connector
import mysql.connector

Ответ 8

Ни одно из приведенных выше решений не помогло мне. Очевидно, мне пришлось понизить мой Python с 3.7.x до 3.6.4, и это решило проблему для меня. Ссылка для скачивания для python=3.6.4.

Я бы порекомендовал создать для этого новую виртуальную среду, а не удалять основной питон. Найдите обширную документацию о том, как создать venv здесь.

Ответ 9

В командной строке просто введите:

python --

вместо:

python --version

(Это должно показать более подробную информацию о версии, включая 32-разрядную или 64-разрядную версию).