"Include-Datei kann nicht geöffnet werden: 'config-win.h': Keine solche Datei oder kein solches Verzeichnis" während der Installation von mysql-python

75

Ich versuche, mysql-python in einer virtuellen Umgebung mit pip unter Windows zu installieren. Zuerst wurde der gleiche Fehler hier gemeldet , aber die Antwort dort funktionierte auch für mich. Jetzt erhalte ich folgenden Fehler:

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

Wenn ich einen Symlink (Win7) zu den Site-Paketen / MySQLdb-Verzeichnissen meines regulären (nicht des virtualenv) Pythons mache, bekomme ich

Error loading MySQLdb module: No module named _mysql

Ich bin hier ziemlich ratlos. Irgendwelche Hinweise?

Samstag Ort
quelle
Hinweis: Zum 01.01.2016 gibt es keinen MySQL-Treiber für Python 3.5.x, siehe stackoverflow.com/questions/34456770/…. Diese Frage ist also nur bis Python 3.4 gültig. Sie können weiterhin Django 1.9 (neueste stabile Version ab 01/2016) damit verwenden.
Tomas Tintera
Wie kann dieses Problem mit MySQL 8.0 gelöst werden?
René Nyffenegger

Antworten:

18

Update für MySQL 5.5 und config-win.h nicht sichtbar Problem

In 5.5 config-win. wurde tatsächlich in den separaten Connector-Ordner in Windows verschoben. dh etw wie:

C: \ Programme \ MySQL \ Connector C 6.0.2 \ include

Um das Problem zu lösen, müssen nicht nur "Dev Bits" (die den Connector tatsächlich verbinden ) heruntergeladen werden, sondern auch mysqldb-Installationsskripte geändert werden, um den Include-Ordner hinzuzufügen. Ich habe so eine schnelle schmutzige Lösung gemacht.

site.cfg:

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

Suchen Sie in setup_windows.py die Zeile

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

und hinzufügen:

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

Danach.

Hässlich, funktioniert aber so lange, bis mysqldb-Autoren das Verhalten ändern.


Fast vergessen zu erwähnen. Auf die gleiche Weise muss ein ähnlicher zusätzlicher Eintrag für libs hinzugefügt werden:

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

dh Ihre setup_windows.py sieht ziemlich ähnlich aus wie:

...
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' ]
...
Bugagotti
quelle
Vielen Dank, es hat nicht für mich funktioniert, bis ich getan habe, was Sie hier aufgelistet haben
Mohamed Faramawi
1
@fastmultiplication Ich habe diesen Ordner nicht. Was soll ich installieren?
Nicola Peluchetti
4
Was sind "Dev Bits? Google weiß nicht einmal, was das sind :(
Shailen
1
@shailenTJ - Siehe die Antwort von chodorowicz unten zur Installation des MySQL-Entwickler-Builds.
Samstag Ort
1
Zu Ihrer Information MySQL Connector C 6.1 hat nicht die erforderliche Datei. MySQL Connector C 6.0.2hat es. Sie müssen also eine alte Version auf der MySQL-Website auswählen ...
Olivier Pons
91

Alles, was ich tun musste, war zu Oracle zu gehen und den MySQL Connector C 6.0.2 herunterzuladen ( neuer funktioniert nicht! ) Und die typische Installation durchzuführen.

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

Stellen Sie sicher, dass alle optionalen Extras (zusätzliche Binärdateien) über die benutzerdefinierte Installation enthalten sind. Ohne diese Extras funktionierte dies für win64.msi nicht

Sobald dies erledigt war, ging ich in Pycharms und wählte das zu installierende MySQL-Python> = 1.2.4-Paket aus, und es funktionierte großartig. Sie müssen keine Konfiguration oder ähnliches aktualisieren. Dies war die einfachste Version, die ich durcharbeiten konnte.

Ich hoffe es hilft

Kevin Mansel
quelle
10
+1 Die mit Abstand einfachste Antwort auf dieses Problem. Seien Sie vorsichtig und wählen Sie die entsprechende Architektur (x86 / 64bit) des Treibers aus.
k427h1c
3
Alter, du bist ein Lebensretter. Ich habe wegen dieses Fehlers eine Weile an meinen Haaren gezogen und alle anderen Lösungen ausprobiert, die komplizierter waren. Vielen Dank für die Bereitstellung einer so einfachen Lösung.
Turingcomplete
9
Ich musste den Connector für x64 installieren und den MySql-Ordner aus dem Verzeichnis 'Programme' in das Verzeichnis 'Programme (x86)' verschieben, da das Build-Skript dort danach suchte
Charlie
38
Nach der Installation von MySQL Connector C 6.0.2 habe ich versucht, "pip install MySQL-python". Es zeigte immer noch den gleichen Fehler. Dann habe ich den Ordner "MySQL Connector C 6.0.2" von "C: \ Programme \ MySQL" nach "C: \ Programme (x86) \ MySQL" kopiert und es hat perfekt funktioniert !!
Prasad DLV
2
Stellen Sie sicher, dass Sie die 32-Bit-Version des Connectors herunterladen. Mit dem 32-Bit-Connector funktioniert es mit MySQL-Python == 1.2.5
Eric Lee
25

Die akzeptierte Lösung scheint für neuere Versionen von MySQL-Python nicht mehr zu funktionieren. Das Installationsprogramm stellt keine site.cfgzu bearbeitende Datei mehr zur Verfügung.

Wenn Sie MySQL-Python installieren, wird es suchen C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include. Wenn Sie eine 64-Bit-Installation von MySQL haben, können Sie einfach Folgendes aufrufen:

  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. Lauf pip install mysql-python
  3. Löschen Sie den in Schritt 1 erstellten symbolischen Link
Gili
quelle
10
Dies ist die richtige Idee für eine Lösung, aber sie hat bei mir nicht funktioniert. Um das Problem zu beheben, habe ich das Verzeichnis C: \ Programme \ MySQL \ MySQL Connector C 6.0.2 \ nach C: \ Programme (x86) \ MySQL \ MySQL Connector C 6.0.2 \ kopiert. Dies löste das Problem für mich
Omer
Der Ansatz für symbolische Links ist gut, muss jedoch breiter sein, da mehr Dateien erforderlich sind. Verwenden Sie daher anstelle des symbolischen @ Gili-Links diesen mklink / d "C: \ Programme (x86) \ MySQL \ MySQL Connector C 6.0.2" "C: \ Programme \ MySQL \ MySQL Connector C 6.0.2 "
Zgr3doo
2
Dies funktioniert in Ordnung für Include-Dateien, jedoch nicht für lib-Dateien. Sie können den 32-Bit-lib-Ordner nicht einfach mit dem 64-Bit-Äquivalent verknüpfen. Es ist wahrscheinlich besser, die 32-Bit- und 64-Bit-SQL Connector-Pakete unabhängig voneinander zu installieren, als irgendetwas zu verknüpfen.
Jarmod
1
Das funktioniert überhaupt nicht. Sie müssen nur die 32-Bit-Version herunterladen und installieren . Zwei Stunden in Windows verloren. 3s unter Linux installieren. Schade.
Olivier Pons
Funktioniert unter Windows 10. Ich musste libzusätzlich zum includeOrdner einen symbolischen Link zum Ordner erstellen .
coder.in.me
15

Die akzeptierte Antwort ist veraltet. Einige der Vorschläge waren bereits im Paket enthalten, und ich erhielt immer noch die Fehlermeldung, dass config-win.h & mysqlclient.lib fehlen.

  • Installieren Sie mysql-connector-c-6.0.2-win32.msi

    Es gibt auch eine Zip-Datei für den Conenctor, aber das hat nicht funktioniert, da sie mysqlclient.libsich im libVerzeichnis befindet, während das Installationsprogramm sie erwartet lib/opt. Anstatt site.cfg oder setup_windows.py zu hacken, erledigt die msi den Job.

  • pip installiere mysql-python

PS Da ich MySQL nicht mehr benutze, ist meine Antwort möglicherweise auch veraltet.

Nutzer
quelle
Gilt das auch für Version 3.3? Ich habe das getan, was Sie erwähnt haben, indem ich die MSI und dann das Pip-Skript heruntergeladen und installiert habe, aber in pip wird immer noch der Fehler angezeigt, dass config-win.h fehlt.
Ryan
In meinem Fall sieht es so aus, als würde ich im Installationsfehler C: \ Programme (x86) sehen. Ich verwende Windows 32-Bit, das nicht "(x86)" im Pfad verwendet. Deshalb denke ich, warum der Fehler bei mir auftritt. Das einzige Problem ist, dass ich nicht weiß, wo sich die Datei befindet, um diese Pfadeinstellung zu korrigieren.
Ryan
2
Nett. Ich habe die x64-Version installiert, aber nicht funktioniert. Dann folgte ich Ihrem Rat und installierte das x86 und voilà! Ich benutze Python 3.4.3 und laufe pip install mysql-pythonund es funktioniert. ;-)
Matheus Santos
10

Ich weiß, dass dieser Beitrag sehr alt ist, aber er wird immer noch als Top-Hit in Google angezeigt, daher werde ich diesem Problem weitere Informationen hinzufügen.

Ich hatte die gleichen Probleme wie OP, aber keine der vorgeschlagenen Antworten schien für mich zu funktionieren. Hauptsächlich, weil "config-win.h" nirgendwo im Connector-Installationsordner vorhanden war.

Ich habe den neuesten Connector C 6.1.6 verwendet, da dies vom MySQL-Installationsprogramm vorgeschlagen wurde.

Dies scheint jedoch vom neuesten MySQL-Python-Paket (1.2.5) nicht unterstützt zu werden. Beim Versuch, es zu installieren, konnte ich feststellen, dass explizit nach C Connector 6.0.2 gesucht wurde.

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

Durch die Installation dieser Version von https://dev.mysql.com/downloads/file/?id=378015 wurde das Python-Paket problemlos installiert.

Jimmy
quelle
Ab heute (07.07.2017) ist dies die einzige Option, die für mich unter Win10 x64 mit Python 2.7 funktioniert hat. Ich habe den Connector 6.1 ausprobiert, aber offensichtlich funktioniert er nicht.
BrandonSun
Danke. Dieser Beitrag hat für mich funktioniert. Python 2.7 MySQL-Python-1.2.5
Abhishek L
7

Höchstwahrscheinlich besteht die Antwort darin, MySQL Developer Build zu installieren und während der Konfiguration die Option "C headers \ libs" auszuwählen. (wie in diesem Eintrag berichtet: Erstellen von MySQLdb für Python unter Windows auf rationalpie.wordpress.com)

Vielleicht ist eine noch bessere Lösung die Installation eines vorkompilierten Builds: http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe

chodorowicz
quelle
Können Sie die Binärdatei in einer virtuellen Umgebung installieren? Als ich es versuchte, gab es mir nur die Möglichkeit meiner Systempython-Installation.
Rocketmonkeys
Nein, ich habe es nicht versucht. Hier finden Sie eine ganze Reihe vorkompilierter MySQLdb-Pakete für Windows - vielleicht funktioniert eines für Sie codegood.com/archives/4
chodorowicz
Ich war nicht in der Lage, dies in einer virtuellen Umgebung zu tun (gut gebaut, aber ja). Ich habe es auch mit niedrigeren Versionen (1.2.1, 1.2.2) ohne Erfolg versucht. Es ist eine Abhängigkeit von einer App von mir, also würde ich wirklich gerne eine robustere Lösung sehen. Ich habe hier einen Fehlerbericht eingereicht sourceforge.net/tracker/…
Dave
2
Ich habe diese exe-Datei mit easy_install unter virtualenv verwendet und sie funktioniert gut unter Windows XP
Laurent
@Rocketmonkeys Ja, Sie können Binärdateien in einer virtuellen Umgebung installieren - siehe Kann ich Python-Windows-Pakete in virtuellen Umgebungen installieren?
Piotr Dobrogost
5

Wenn pip "MySQLdb" nicht installiert, können Sie es zunächst über diesen Link herunterladen und auf Ihrem Computer installieren

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

Kopieren Sie dann alle MySQL * - und _mysql * -Dateien und -Verzeichnisse von Ihrem Python-System in Ihr Virtualenv-Verzeichnis:

c:\Python27\Lib\site-packages (oder ähnlicher Pfad zu Ihrem System Python) bis c:\my_virtenv\Lib\site-packages(Pfad zu Ihrer virtuellen Umgebung)

Dmitriy
quelle
Diese Lösung funktioniert nicht mehr. Versuchte alle vier Möglichkeiten und alle vier scheiterten.
Canadiancreed
4

Ich hatte auch große Kopfschmerzen mit MySQLdb.

Warum nicht den offiziellen MysQL Python Connector verwenden?

easy_install mysql-connector-python

Oder Sie können es hier herunterladen: http://dev.mysql.com/downloads/connector/python/

Dokumentation: http://dev.mysql.com/doc/refman/5.5/en/connector-python.html

Yassine ElBadaoui
quelle
Es war die einfachste Lösung für mich. Vergessen Sie nicht, mysqlconnectorAPI zu verwenden :engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
Mtoloo
Diese Lösung funktionierte am besten für mich, sowohl in Python 2 als auch in 3.
Twasbrillig
Derzeit unterstützt dies nur Python bis 3.4
Danio
3

Durch die Installation von Dev-Bits für MySQL wurde der config-win.hFehler, den ich hatte, beseitigt und ein weiterer Fehler ausgelöst . Failed to load and parse the manifest. The system cannot find the file specified.Die Antwort auf mein Problem habe ich in diesem Beitrag gefunden: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/ .

Ich habe die Datei 'C: \ Python26 \ Lib \ distutils \ msvc9compiler.py` in meine virtuelle Umgebung kopiert, die im obigen Link vorgeschlagene Bearbeitung vorgenommen und alles funktioniert einwandfrei.

Samstag Ort
quelle
1
Kurze Frage zu "Die Installation von Dev-Bits für MySQL hat den Fehler config-win.h beseitigt". Was sind "Dev Bits" und wo kann ich sie bekommen? =) Ich habe ein ähnliches Problem.
John
Ich auch. Ich habe die vollständige Installation von mySql 5.5 durchgeführt. feste site.cfg. Aber immer noch der Fehler: _mysql.c (34): Schwerwiegender Fehler C1083: Include-Datei kann nicht geöffnet werden: 'config-win.h': Keine solche Datei oder kein solches Verzeichnis
Shrike
Ich installiere mein gesamtes Python-Entwickler-Setup neu und stecke an diesem Punkt fest. Wo auf der Welt finde ich die Datei "config-win.h" ???
Rocketmonkeys
Dies wird im obigen Link behandelt: "Laden Sie die MySQL msi-Installationsversion herunter und wählen Sie im benutzerdefinierten Setup" Entwicklerkomponenten "aus. Diese werden nicht standardmäßig installiert."
Samstag Ort
3

Einfachste Arbeitslösung:

Laden Sie den MySQL Connector C 6.0.2 über den folgenden Link herunter und installieren Sie ihn.

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

Kopieren Sie nach der Installation von MySQL Connector C 6.0.2 den Ordner "MySQL Connector C 6.0.2" von "C: \ Programme \ MySQL" nach "C: \ Programme (x86) \ MySQL".

Geben Sie dann ein

pip install MySQL-python

Es wird definitiv funktionieren.

Gil Baggio
quelle
1
danke Mann, ich hatte alles versucht und nichts funktionierte, aber als ich mein 'MySQL Connector C'-Verzeichnis aus Programmdateien in Programmdateien (x86) kopierte, löste das Problem, dass Sie meinen Tag gerettet hatten.
Nochmals vielen
Gerne helfe ich dir, Bruder. Prost! @ Code_Worm
Gil Baggio
2

In meinem Fall kopierte mein Fix den Ordner, der aus mysql-connector-c-6.0.2-win32.msi (in einem früheren Beitrag aus dem Benutzernamenpuffer referenziert) erstellt wurde und sich unter c: \ Programme \ MySQL \ MySQL Connector befindet C 6.0.2 und Erstellen eines neuen Pfads mit Programmdateien (x86) und Einfügen des Inhalts dort, da die Installation zwischen 32-Bit- und 64-Bit-Computern nicht ordnungsgemäß überprüft.

Der neue Pfad lautet also C: \ Programme (x86) \ MySQL \ MySQL Connector C 6.0.2. Dies ist der Pfad, den das Installationsprogramm suchen möchte. Daher habe ich die Dateien dort eingefügt, um dem Installationsprogramm das Auffinden der Dateien zu erleichtern. Dies hat den Fehler verursacht, dass config-win.h fehlt

Ryan
quelle
1

Versuchen Sie ActivePython ,

pypm -E C:\myvirtualenv install mysql-python
Sridhar Ratnakumar
quelle
1

Ich habe die Antwort von Bugagotti befolgt und es funktioniert nicht in meinen Fenstern (Win7 64 Bit, Py27 und MySQL Connector 6.1 installiert) für MySQL-Python-1.2.5, also habe ich einige sogar schmutzige Änderungen in MySQL-Python-vorgenommen. 1.2.5:

Zunächst die site.cfg:

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

Zweitens ist die _mysql.c:

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

Zu:

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

Und mit diesen Änderungen wird das Problem config_win.h behoben, aber es gibt immer noch ein Linkproblem:

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

Dafür habe ich die Datei setup_windows.py geändert:

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

Dann hat es endlich geklappt.

Mingcai SHEN
quelle
1

Ich folgte der Methode von Mingcai SHEN.

Aber in meinem Fall habe ich den Stecker auf geändert

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

Und die library_dirs wird in geändert

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

weil ich kein vs9Verzeichnis habe. Es funktioniert, aber ich weiß nicht warum .

Ich habe vs2012 installiert und das lib-Verzeichnis des Connectors hat nur vs10und vs11, in dem vs11es nicht funktioniert. Die von mir installierte VCForPyhton27.mis scheint zu unterstützen vs9.

Wie auch immer, das funktioniert. Und wenn Sie es riskieren wollen, können Sie es versuchen.

zijuexiansheng
quelle
1

Lösung, an der ich gearbeitet habe Windows: Installieren Sie sowohl die 32-bit- als auch die 64-bit-Version von MySQL Connector / C 6.0.2 . Öffnen Command Promptund ausführen:

pip install mysql-python
raul
quelle
1

Für mich löste der folgende Ansatz das Problem (Python 3.5.2; mysqlclient 1.3.9):

  1. Laden Sie den neuesten MySQL C Connector herunter http://dev.mysql.com/downloads/connector/c/ (für mich war Windows (x86, 64-Bit), MSI Installer)
  2. c:\Program Files\MySQL\MySQL Connector C 6.0.2\Verzeichnis kopieren nachc:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. Lauf pip install mysqlclient
  4. [optional] löschen c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

Das Problem tritt hier nur bei Besitzern von x64-Bit-Installationen auf, da das Build-Skript versucht, die C-Connector-Includes im Verzeichnis der x86-Programmdateien zu finden.

Dagaz
quelle
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

Wenn Sie dies beim Versuch sehen pip install mysql-python, ist das Kopieren am einfachsten

C:\Program Files\MySQL\MySQL Connector C 6.0.2 zu C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

Ich habe versucht, den symbolischen Link zu erstellen, aber Windows wirft mich immer wieder 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.

timbuntu2
quelle
1

Schritte für Window10:

  • Gehe zu https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
  • Laden Sie die richtige Version gemäß der Python-Version und den Hardwarespezifikationen herunter: für meinen Fall, mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl für Python3.7 und Intel-CPU.
  • Während Ihre Umgebung noch aktiviert ist, gehen Sie zum Download-Ordner und führen Sie sie aus pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl
David P.
quelle
0

Wenn Sie dies in einer virtuellen Umgebung tun, unabhängig davon, ob Sie Visual Studio verwenden oder nicht, versuchen Sie es easy_install MySQL-python

Saher Ahwal
quelle
0

Laden Sie die Version von Connector von herunter. https://dev.mysql.com/downloads/connector/c/6.0.html Für meinen Fall hatte ich 64-Bit-Connector installiert und mein Python war 32-Bit. Also musste ich MySQL aus Programmdateien in Programmdateien kopieren (86)

Ishwar Rimal
quelle