Search code examples
pythonwindowsvirtualenvpipmysql-python

"Cannot open include file: 'config-win.h': No such file or directory" while installing mysql-python


I'm trying to install mysql-python in a virtualenv using pip on windows. At first, I was getting the same error reported here, but the answer there worked for me too. Now I'm getting this following error:

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

If I symlink (Win7) to my regular (not the virtualenv's) python's site-packages/MySQLdb dir I get

Error loading MySQLdb module: No module named _mysql

I'm rather at a loss here. Any pointers?


Solution

  • Update for mysql 5.5 and config-win.h not visible issue

    In 5.5 config-win. has actually moved to Connector separate folder in windows. i.e. smth like:

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

    To overcome the problem one need not only to download "dev bits" (which actually connects the connector) but also to modify mysqldb install scripts to add the include folder. I've done a quick dirty fix as that.

    site.cfg:

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

    in setup_windows.py locate the line

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

    and add:

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

    after it.

    Ugly but works until mysqldb authors will change the behaviour.


    Almost forgot to mention. In the same manner one needs to add similar additional entry for libs:

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

    i.e. your setup_windows.py looks pretty much like:

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