"Не вдається відкрити файл включення: 'config-win.h': Немає такого файлу або каталогу" під час встановлення mysql-python


75

Я намагаюся встановити mysql-python у virtualenv, використовуючи pip на windows. Спочатку я отримував ту саму помилку, про яку повідомляли тут , але відповідь там спрацювала і на мене. Тепер я отримую таку помилку:

_mysql.c(34) : Fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

Якщо я посилаюся (Win7) на мій звичайний (не virtualenv) python сайт-пакети / MySQLdb, я отримую

Error loading MySQLdb module: No module named _mysql

Я тут скоріше заблукав. Будь-які вказівники?


Примітка: станом на 01/2016 немає драйвера MySQL для python 3.5.x див. Stackoverflow.com/questions/34456770/ ... Отже, це питання справедливе лише до Python 3.4. Ви все ще можете використовувати Django 1.9 (остання стабільна версія станом на 01/2016) з ним.
Томаш Тінтера

Як можна вирішити цю проблему за допомогою MySQL 8.0?
René Nyffenegger

Відповіді:


18

Оновлення для mysql 5.5 та config-win.h не видно

У 5.5 config-win. насправді перемістився в окрему папку Connector у Windows. тобто щось подібне:

C: \ Program Files \ MySQL \ Connector C 6.0.2 \ include

Щоб подолати проблему, потрібно не лише завантажити "dev bits" (який насправді підключає роз'єм ), а й змінити скрипти встановлення mysqldb, щоб додати папку include. Я швидко зробив брудне виправлення.

site.cfg:

# Windows connector libs for MySQL.
connector = C:\Program Files\MySQL\Connector C 6.0.2

у setup_windows.py знайдіть рядок

include_dirs = [ os.path.join(mysql_root, r'include') ]:

і додати:

include_dirs = [ os.path.join(options['connector'], r'include') ]

після нього.

Некрасиво, але працює, доки автори mysqldb не змінять поведінку.


Майже забув згадати. Таким же чином потрібно додати подібний додатковий запис для libs:

library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]

тобто ваш setup_windows.py виглядає приблизно так:

...
library_dirs = [ os.path.join(mysql_root, r'lib\opt') ]
library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]
libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]
include_dirs = [ os.path.join(mysql_root, r'include') ]
include_dirs = [ os.path.join(options['connector'], r'include') ]
extra_compile_args = [ '/Zl' ]
...

Дякую купу, це не спрацювало для мене, поки я не зробив те, що ви перерахували тут
Мохамед Фарамаві

1
@fastmultiplication у мене немає цієї папки, що слід встановити?
Нікола Пелучетті

4
Що таке "біти розробників"? Google навіть не знає, що це :(
Шайлен

1
@shailenTJ - Дивіться відповідь chodorowicz нижче про встановлення збірки розробника MySQL.
суботу місце

1
Для вашої інформації MySQL Connector C 6.1 немає необхідного файлу. MySQL Connector C 6.0.2має це. Отже, вам слід вибрати стару версію на веб-сайті MySQL ...
Олів’є Понс

91

Все, що мені потрібно було перейти до Oracle, і завантажити MySQL Connector C 6.0.2 ( новіша версія не працює! ) І виконати типову установку.

https://downloads.mysql.com/archives/cc/

Не забудьте включити всі додаткові додаткові елементи (Extra Binaries) через спеціальну установку, без них це не спрацювало для win64.msi

Після того, як це було зроблено, я зайшов у pycharms і вибрав для встановлення пакет MySQL-python> = 1.2.4, і він чудово працював. Не потрібно оновлювати будь-яку конфігурацію або щось подібне. Для мене це була найпростіша версія.

Сподіваюся, це допоможе


10
+1 На сьогоднішній день найпростіша відповідь на цю проблему. З обережністю, виберіть відповідну архітектуру (x86 / 64bit) драйвера.
k427h1c

3
Чувак, ти рятувальник життя. Я деякий час натягував волосся через цю помилку, спробував усі інші рішення, які були більш складними. Дякуємо за надання такого простого рішення.
turingcomplete

9
Мені довелося встановити з'єднувач для x64 і перемістити папку MySql з "Програмних файлів" в каталог "Програмні файли (x86)", оскільки саме там його шукав сценарій збірки
Чарлі

38
Після встановлення MySQL Connector C 6.0.2, я спробував «встановити MySQL-python». Це все одно показало ту саму помилку. Потім я скопіював папку "MySQL Connector C 6.0.2" з "C: \ Program Files \ MySQL" в "C: \ Program Files (x86) \ MySQL", і вона працювала чудово !!
Прасад DLV

2
Обов’язково завантажте 32-бітну версію роз’єму. З 32-розрядним роз’ємом він буде працювати з MySQL-python == 1.2.5
Ері Лі

25

Здається, прийняте рішення вже не працює для нових версій mysql-python. Інсталятор більше не надає site.cfgфайл для редагування.

Якщо ви встановлюєте mysql-python, це буде шукати C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include. Якщо у вас є 64-розрядна установка MySQL, ви можете просто викликати:

  1. mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include"
  2. Біжи pip install mysql-python
  3. Видаліть символічне посилання, створене на кроці 1

10
Це правильна ідея рішення, однак у мене це не спрацювало. Для вирішення проблеми я скопіював каталог C: \ Program Files \ MySQL \ MySQL Connector C 6.0.2 \ в C: \ Program Files (x86) \ MySQL \ MySQL Connector C 6.0.2 \. Це вирішило проблему для мене
Омер,

підхід символічного посилання хороший, але він повинен бути ширшим, оскільки потрібно більше файлів, тому замість символічного посилання @Gili використовуйте цей mklink / d "C: \ Program Files (x86) \ MySQL \ MySQL Connector C 6.0.2" "C: \ Program Files \ MySQL \ MySQL Connector C 6.0.2 "
Zgr3doo,

2
Це працює добре для файлів включення, але не для файлів lib. Ви не можете просто символічно зв’язати 32-розрядну папку lib з 64-розрядним еквівалентом. Можливо, краще просто встановити як 32-розрядний, так і 64-розрядний пакети SQL Connector самостійно, а не будь-що символічно посилати.
jarmod

1
Це взагалі не працює. Вам потрібно завантажити та встановити лише 32-бітну версію . Дві години втрачено в Windows. 3s встановити на Linux. Який сором.
Олів'є Понс

Працює в Windows 10. Мені довелося створити символічне посилання на libпапку на додаток до includeпапки.
coder.in.me

15

Прийнята відповідь застаріла. Деякі пропозиції вже були включені в пакет, і я все ще отримував помилку про відсутність config-win.h & mysqlclient.lib.

  • Встановіть mysql-connector-c-6.0.2-win32.msi

    Для коннектора теж є zip-файл, але це не спрацювало, оскільки він mysqlclient.libзнаходиться в libкаталозі, тоді як інсталятор очікує його lib/opt. Замість того, щоб зламати site.cfg або setup_windows.py, msi виконує цю роботу.

  • pip встановити mysql-python

PS Оскільки я більше не використовую MySQL, моя відповідь також може бути застарілою.


Це також для версії 3.3? Я зробив, як ви вже згадали, завантаживши та встановивши скрипт msi, а потім pip, але я все ще отримую помилку в pip про відсутність config-win.h.
Райан

Схоже, у моєму випадку я бачу в помилці встановлення C: \ програмні файли (x86). Я використовую 32-розрядну Windows, яка не використовує "(x86)" у шляху. Це я думаю, чому помилка трапляється у мене. Єдина проблема полягає в тому, що я не знаю, де знаходиться файл, щоб виправити цей параметр шляху.
Райан

2
Приємно. Я встановив версію x64, але не працював. Тоді я дослухався до вашої поради та встановив x86 та voilà! Я використовую Python 3.4.3 і працював, pip install mysql-pythonі це працює. ;-)
Матеус Сантос

10

Я знаю, що ця публікація надзвичайно стара, але вона все ще виступає як найпопулярніший хіт у Google, тому я додаю додаткову інформацію до цієї проблеми.

У мене були ті самі проблеми, що і у OP, але жодна із запропонованих відповідей, здавалося, не спрацювала для мене. Головним чином тому, що "config-win.h" ніде не існував у папці встановлення роз'єму.

Я використовував останню версію Connector C 6.1.6, оскільки саме це запропонував інсталятор MySQL.

Однак, схоже, це не підтримується останнім пакетом MySQL-python (1.2.5). При спробі встановити його я бачив, що він явно шукав C Connector 6.0.2.

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

Отже, встановивши цю версію з https://dev.mysql.com/downloads/file/?id=378015, пакет python встановив без будь-яких проблем.


На сьогодні (2017/7/2) це єдиний варіант, який працював у мене на Win10 x64, з Python 2.7. Я спробував роз'єм 6.1, але, очевидно, він не працює.
BrandonSun

Спасибі. Цей пост працював у мене. Python 2.7 mysql-python-1.2.5
Abhishek L

7

Швидше за все, відповідь полягає в тому, щоб встановити MySQL Developer Build та вибрати параметр "C headers \ libs" під час налаштування. (як повідомляється в цьому матеріалі: Створення MySQLdb для Python у Windows на раціональному.wordpress.com)

Можливо, ще кращим рішенням є встановлення попередньо скомпільованої збірки: http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe


Чи можете ви встановити двійковий файл у virtualenv? Коли я спробував, це дало мені лише можливість моєї системної установки python.
rocketmonkeys

Ні, я не пробував. Тут ви можете знайти цілий набір прекомпілірованние пакетів MySQLDb для Windows - може бути , один їх буде працювати для вас codegood.com/archives/4
chodorowicz

Я не зміг зробити це у virtualenv (ну нарощування, але так). Я також пробував із нижчими версіями (1.2.1, 1.2.2) без жодного успіху. Це залежність від мого додатка, тому я б дуже хотів бачити більш надійне рішення. Я подав тут звіт про помилку sourceforge.net/tracker/…
Дейв

2
Я використовував цей файл exe з easy_install під virtualenv, і він добре працює під Windows XP
Лоран,

@Rocketmonkeys Так, ви можете встановити двійковий файл у virtualenv - див. Чи можу я встановити пакети Windows Python у virtualenvs?
Piotr Dobrogost

5

Якщо pip не вдається встановити "MySQLdb", обхідним шляхом є завантаження та встановлення його на вашу машину спочатку за цим посиланням

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

потім скопіюйте всі файли та каталоги MySQL * та _mysql * із вашої системної програми Python у ваш каталог Virtualenv:

c:\Python27\Lib\site-packages (або подібний шлях до вашої системи Python) до c:\my_virtenv\Lib\site-packages(шлях до вашого virtualenv)


Це рішення вже не працює. Спробував усі чотири можливості, і всі чотири не вдалося.
canadian


4

У мене також був головний біль із MySQLdb.

Чому б не використовувати офіційний MysQL Python Connector?

easy_install mysql-connector-python

Або ви можете завантажити його звідси: http://dev.mysql.com/downloads/connector/python/

Документація: http://dev.mysql.com/doc/refman/5.5/en/connector-python.html


Для мене це було найпростішим рішенням. Не забудьте скористатися mysqlconnectorAPI:engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
mtoloo

Це рішення працювало найкраще для мене як в Python 2, так і в 3.
twasbrillig

В даний час це підтримує лише python до 3.4
danio

3

Встановлення бітів розробника для mysql позбулося config-win.hпомилки, яку я мав, і викинуло іншу. Failed to load and parse the manifest. The system cannot find the file specified.Відповідь на свою проблему я знайшов у цій публікації: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/ .

Я скопіював файл 'C: \ Python26 \ Lib \ distutils \ msvc9compiler.py` у свій virtualenv, зробив редагування, запропоноване у наведеному вище посиланні, і все працює нормально.


1
Швидке запитання про "Встановлення бітів розробника для mysql позбулося помилки config-win.h". Що таке "біти розробника" і де я їх можу отримати? =) У мене схожа проблема.
Джон

Я теж. Я зробив повну установку mySql 5.5. фіксований сайт.cfg. Але все-таки отримує помилку: _mysql.c (34): фатальна помилка C1083: Не вдається відкрити файл включення: 'config-win.h': Немає такого файлу або каталогу
Шрайк

Я перевстановлюю всю свою установку python dev, і на цьому етапі я застряг. Де у світі можна знайти файл "config-win.h" ???
rocketmonkeys

Про це йдеться у посиланні вище: "Завантажте версію інсталятора MySQL msi, виберіть" Компоненти розробника "у Спеціальному налаштуванні. Вони не встановлюються за замовчуванням."
суботу

3

Найпростіше робоче рішення:

Завантажте MySQL Connector C 6.0.2 з посилання нижче та встановіть.

http://dev.mysql.com/downloads/connector/c/6.0.html#downloads

Після встановлення MySQL Connector C 6.0.2 скопіюйте папку "MySQL Connector C 6.0.2" із "C: \ Program Files \ MySQL" у "C: \ Program Files (x86) \ MySQL".

Потім наберіть

pip install MySQL-python

Це точно спрацює.


1
дякую, я пробував все, і нічого не працювало, але коли я скопіював каталог MySQL Connector C з програмних файлів у програмні файли (x86), проблема вирішена, ви врятували мій день ще раз спасибі
Code_Worm

Радий допомогти тобі, брате. На здоров’я! @Code_Worm
Gil Baggio

2

У моєму випадку моє виправлення копіювало папку, створену з mysql-connector-c-6.0.2-win32.msi (посилання з буфера імені користувача в попередньому дописі), яка знаходиться в c: \ Program Files \ MySQL \ MySQL Connector C 6.0.2 та створення нового шляху за допомогою програмних файлів (x86) та вставлення вмісту туди, оскільки інсталяція не перевіряє належним чином між 32-розрядними та 64-розрядними машинами.

Отже, новий шлях - C: \ Program Files (x86) \ MySQL \ MySQL Connector C 6.0.2. Це шлях, який шукає інсталятор, тому я вставив туди файли, щоб допомогти інсталятору знайти файли, що спричинило помилку про відсутність config-win.h



1

Я наслідував відповідь від Bugagotti, і він не працює у моїх вікнах (Win7 64 bit, py27 та має встановлений роз'єм mysql 6.1) для mysql-python-1.2.5, тому я зробив деякі навіть брудні зміни всередині mysql-python- 1.2.5:

По-перше, site.cfg:

connector = C:\Program Files\MySQL\MySQL Connector C 6.1

По-друге, _mysql.c:

#if defined(MS_WINDOWS)
#include <config-win.h>
#else
#include "my_config.h"
#endif

Кому:

#if 0 /*defined(MS_WINDOWS)*/
#include <config-win.h>
#else
#include "my_config.h"
#endif

І з цими змінами проблема config_win.h зникне, але проблема з посиланням все ще залишається:

LINK : fatal error LNK1181: cannot open input file 'mysqlclient.lib'

Для цього я змінив setup_windows.py:

library_dirs = [ os.path.join(connector, r'lib\vs9') ]  ## the original value was r'lib\opt'

Тоді це нарешті спрацювало.


1

Я дотримувався методу Mingcai SHEN.

Але в моєму випадку я змінив роз’єм на

connector = C:\Program Files\MySQL\MySQL Connector.C 6.1

І бібліотека_дірів змінена на

library_dirs = [ os.path.join(connector, r'lib\vs10') ]

тому що у мене немає vs9каталогу. Це працює, але я не знаю чому .

У мене встановлено vs2012, а каталог lib коннектора має лише vs10і vs11, в якому vs11не працює. Здається, встановлений мною VCForPyhton27.mis підтримує vs9.

У будь-якому випадку, це працює. А якщо ви хочете ризикнути, можете спробувати.


1

Рішення, яке працювало для мене Windows: Встановіть як 32-bit, так і 64-bit версії MySQL Connector / C 6.0.2 . Відкрити Command Promptта запустити:

pip install mysql-python

1

Для мене такий підхід вирішив проблему (Python 3.5.2; mysqlclient 1.3.9):

  1. Завантажте найновіший коннектор MySQL C http://dev.mysql.com/downloads/connector/c/ (для мене Windows (x86, 64-розрядна версія), інсталятор MSI)
  2. Копіювати c:\Program Files\MySQL\MySQL Connector C 6.0.2\ каталог вc:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. Біжи pip install mysqlclient
  4. [необов’язково] видалити c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

Проблема тут стосується лише власників інсталяції x64 біт, оскільки сценарій збірки намагається знайти роз’єм C, що входить до каталогу програмних файлів x86.


1
building '_mysql' extension
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
C:\Users\TimHuang\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" -Ic:\python27\include -Ic:\python27\PC /Tc_mysql.c /Fobuild\temp.win-amd64-2.7\Release\_mysql.obj /Zl
_mysql.c
_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

Якщо ви бачите це при спробі pip install mysql-python , найпростіший спосіб - скопіювати

C:\Program Files\MySQL\MySQL Connector C 6.0.2 до C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

Я намагався створити символічне посилання, але Windows продовжує мене кидати C:\WINDOWS\system32>mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include" The system cannot find the path specified.


1

Кроки для Window10:

  • Йти до https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
  • Завантажте правильну версію відповідно до версії python та технічних характеристик: для мого випадку, mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl працює для python3.7 та процесора Intel.
  • Поки env все ще активовано, перейдіть до папки для завантаження та запустіть pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl

0

Якщо ви робите це у віртуальному середовищі, використовуючи Visual Studio чи іншим способом, спробуйте easy_install MySQL-python



0

Завантажте версію Connector з https://dev.mysql.com/downloads/connector/c/6.0.html мого випадку, я встановив 64-бітний конектор, а мій python - 32-бітний. Тому мені довелося скопіювати MySQL з програмних файлів у програмні файли (86)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.