2009-12-29 4 views
60

Я пытаюсь установить mysql-python в virtualenv, используя pip на windows. Сначала я получал ту же ошибку reported here, но ответ там тоже работал на меня. Теперь я получаю эту ошибку:«Невозможно открыть файл include:« config-win.h »: нет такого файла или каталога» при установке mysql-python

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

Если я SYMLINK (Win7) моим регулярным (не virtualenv в) Пайтон сайт-пакетов/MySQLDb реж я

Error loading MySQLdb module: No module named _mysql 

Я довольно в убытке здесь. Любые указатели?

+0

. Примечание: в качестве od 01/2016 нет драйвера MySQL для python 3.5.x см. http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 Итак, этот вопрос действителен только до Python 3.4. Вы можете по-прежнему использовать Django 1.9 (последняя стабильная версия с 01/2016). –

ответ

16

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

В версии 5.5 config-win. фактически переместился в отдельную папку Connector в окнах. то есть чего-л, как:

C: \ Program Files \ MySQL \ Разъем C 6.0.2 \ включают

Для преодоления проблемы одна потребность не только для загрузки "Dev бит" (который на самом деле соединяет разъем) но также для изменения сценариев установки 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 не изменят поведение.


Почти забыл упомянуть. Таким же образом необходимо добавить аналогичную дополнительную запись для библиотек:

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

т. Е. Ваш setup_windows.пй выглядит так же, как:

... 
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' ] 
... 
+0

Спасибо, что это не сработало для меня, пока я не сделал то, что вы указали здесь –

+0

, из mysql- python 1.2.4, по умолчанию site.cfg уже обновлен, чтобы отразить этот комментарий. Тем не менее, default.cfg по умолчанию для 64-битных окон, поэтому путь к коннектору будет неправильным на 32 бит. Удалить (x86) и удалить «MySQL» из «MySQL Connector C 6.0.2» – fastmultiplication

+1

@fastmultiplication у меня нет этой папки, что мне нужно установить? –

3

Установка бит dev для 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

Быстрый вопрос о «Установка бит dev для mysql избавился от ошибки config-win.h». «dev bits» и где я могу взять их? =) У меня такая же проблема. – John

+0

Так же я. Я выполнил полную установку mySql 5.5. fixed site.cfg. Но все равно получить ошибку: _mysql.c (34): fatal error C1083: Не могу открыть файл include: 'config-win.h': Нет такого файла или каталога – Shrike

+0

Я переустанавливаю всю свою установку python dev, и я застрял в этой точке. Где в мире можно найти файл config-win.h ??? – rocketmonkeys

7

Скорее всего, ответ заключается в установке MySQL Developer Build и выборе опции «C headers \ libs» во время конфигурации. (Как сообщалось в этой записи: Строительство MySQLdb для Python на Windows, на rationalpie.wordpress.com)

Может быть даже лучшим решением будет установить скомпилированную сборку: http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe

+0

Можете ли вы установить двоичный файл в virtualenv? Когда я попытался, это только дало мне возможность установки моей системы python. – rocketmonkeys

+0

Нет, я не пробовал. Здесь вы можете найти целый набор предварительно скомпилированных пакетов MySQLdb для Windows - возможно, один из них будет работать для вас http://www.codegood.com/archives/4 – chodorowicz

+0

Я не смог сделать это в виртуальном пространстве (хорошо построенный, но да). Я также пробовал с более низкими версиями (1.2.1, 1.2.2) без каких-либо успехов. Его зависимость от моего приложения, поэтому я бы очень хотел увидеть более надежное решение. Я отправил отчет об ошибке здесь https://sourceforge.net/tracker/?func=detail&aid=3153396&group_id=22307&atid=374932 – Dave

4

Ну, если вы все еще возникают проблемы, вы можете загрузить программу установки с http://code.google.com/p/soemin/downloads/detail?name=MySQL-python-1.2.3.win32-py2.7.exe

+0

Это работает только если у вас есть v2.7 – canadiancreed

+0

Это сработало для меня, так как у меня установлен python 2.7. Благодаря! – abc

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

+0

Это было простое решение для меня. Не забывайте использовать API 'mysqlconnector':' engine = create_engine ('mysql + mysqlconnector: // scott: tiger @ localhost/foo') ' – mtoloo

+0

Это решение работало лучше для меня, как в Python 2, так и 3. – twasbrillig

+0

В настоящее время это поддерживает только python до 3.4. – danio

81

Все, что я должен был сделать, это пойти к оракулу, и загрузить MySQL Connector C 6.0.2 (более новый не работает!) и сделайте типичную установку.

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

Не забудьте включить все дополнительные экстры (Дополнительные бинарники) с помощью выборочной установки, без них она не работает для win64.msi

Как только это было сделано, я пошел в pycharms, и выбрал пакет MySQL-python> = 1.2.4 для установки, и он отлично работал. Не нужно обновлять какую-либо конфигурацию или что-то в этом роде. Это была самая простая версия для меня.

надеюсь, что это помогает

+10

+1. Самый простой ответ на эту проблему.Слово предостережения, выберите соответствующую архитектуру (x86/64 бит) драйвера. –

+0

Спасибо, Кевин! Я знал, что, должно быть, был более простой способ! Отлично. – User

+3

Чувак, ты спасатель жизни. Из-за этой ошибки я немного натягивал свои волосы, я пробовал все другие решения, которые были более сложными. Спасибо за предоставление такого простого решения. – turingcomplete

23

Принятое решение больше не похоже на работу для новых версий MySQL-питона. Установщик больше не предоставляет файл 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. Run pip install mysql-python
  3. Удалить символическую ссылку, созданную на шаге 1
+9

Это правильная идея для решения, однако для меня это не сработало. Чтобы решить проблему, я скопировал каталог C: \ Program Files \ MySQL \ MySQL Connector C 6.0.2 \ to C: \ Program Files (x86) \ MySQL \ MySQL Connector C 6.0.2 \. Это решило проблему для меня – Omer

+1

Спасибо, помогло –

+1

Копирование каталога работало для меня тоже. – tobip

15

Принятый ответ из даты. Некоторые из предложений уже были включены в пакет, и я все еще получал сообщение об ошибке config-win.h & mysqlclient.lib.

  • Установка mysql-connector-c-6.0.2-win32.msi

    There's a zip file for the conenctor too but that didn't work because mysqlclient.lib is in lib directory whereas the installer expects it in lib/opt . Instead of hacking site.cfg or setup_windows.py, the msi does the job.

  • пункт установить MySQL-Python

P.S. Поскольку я больше не использую MySQL, мой ответ также может быть устаревшим.

+0

Это также для версии 3.3? Я сделал, как вы упомянули, загрузив и установив скрипт msi, а затем pip, но я все еще получаю ошибку в pip о config-win.h. – Ryan

+0

Похоже, что в моем случае я вижу ошибку установки C: \ program files (x86). Я использую 32-разрядную версию Windows, которая не использует «(x86)» в пути. Это я думаю, почему ошибка происходит для меня. Проблема только в том, что я не знаю, где находится файл, чтобы исправить этот путь. – Ryan

+2

Ницца. Я установил версию x64, но не работал. Затем я последовал твоему совету и установил x86 и вуаля! Я использую Python 3.4.3 и запускаю 'pip install mysql-python', и он работает. ;-) –

3

Если пип не удается установить «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)

+0

Это действительно сработало для меня, спасибо, вы спасли мой день – indichimp

+0

Это решение больше не работает. Попытались все четыре возможности, и все четыре потерпели неудачу. – canadiancreed

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 бит, 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 

To:

#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 изменяется на

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

, потому что у меня нет каталога vs9. Это работает, но Не знаю почему.

У меня установлен vs2012, а каталог lib на коннекторе имеет только vs10 и vs11, в котором vs11 не работает. Установленный VCForPyhton27.mis, похоже, поддерживает vs9.

В любом случае, это работает.И если вы хотите рискнуть, вы можете попробовать.

9

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

У меня были те же проблемы, что и у ОП, но ни один из предложенных ответов не работал для меня. В основном потому, что «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 пакет питон установлен без каких-либо проблем.

+0

Большое спасибо! Это сработало! – keitereth24

+0

На сегодняшний день (2017/7/2) это единственный вариант, который работал для меня на Win10 x64, с Python 2.7. Я пробовал соединитель 6.1, но, очевидно, он не работает. – BrandonSun

1

Решение, которое сработало для меня на Windows: Установите как 32 -bit, так и 64-битные версии MySQL Connector/C 6.0.2. Открыть Command Prompt и запуск:

pip install mysql-python 
+0

тоже работал для меня. – sevenfourk

0

Если вы делаете это в виртуальной среде, будь то с помощью Visual Studio или иначе, попробуйте easy_install MySQL-python

1

Для меня следующий подход был решен вопрос (Python 3.5.2; mysqlclient 1.3.9):

  1. Dowload последний MySQL C Connector http://dev.mysql.com/downloads/connector/c/ (для меня был для Windows (x86, 64-разрядная версия), MSI Installer)
  2. Copyкаталог для c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. Run pip install mysqlclient
  4. [опционально] удаление c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

Проблема здесь только для 64 битных владельцев установки, так как сценарий сборки пытается найти разъем C включает в x86 каталоге программных файлов.

2

Скачать 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 

Это, безусловно, работать