Python3安装mysqlclient包

简单粗暴,直接如题。

安装mysqlclient==1.4.2.post1版本时,提示:MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory

按照提示需要安装MySQL Connecter/C,去官网下载MySQL installer,MySQL完整安装实在太大了,此处没有必要。所以选择custom安装,找到MySQL Connecter/C,分为x86和64两种,这里建议安装x86版本的,原因是在site.cfg中默认配置的是x86的路径(当然也可以修改这个配置),详情见下文。

安装后,再次执行安装,发现仍然报错。

到MySQL Connecter/C安装目录看,在include下是有mysql.c文件的。

下载mysqlclient==1.4.2.post1的源码包,查看setup.py,发现有如下代码:

def get_config():
    from setup_common import get_metadata_and_options, enabled, create_release_file

    metadata, options = get_metadata_and_options()

    connector = options["connector"]

    extra_objects = []

    # client = "mysqlclient"
    client = "mariadbclient"

    vcversion = int(get_build_version())
    if client == "mariadbclient":
        library_dirs = [os.path.join(connector, 'lib', 'mariadb')]
        libraries = ['kernel32', 'advapi32', 'wsock32', 'shlwapi', 'Ws2_32', client ]
        include_dirs = [os.path.join(connector, 'include', 'mariadb')]
    else:
        library_dirs = [os.path.join(connector, r'lib\vs%d' % vcversion),
                        os.path.join(connector, "lib")]
        libraries = ['kernel32', 'advapi32', 'wsock32', client ]
        include_dirs = [os.path.join(connector, r'include')]
.......................

继续查看get_metadata_and_options()方法:

def get_metadata_and_options():
    config = SafeConfigParser()
    config.read(['metadata.cfg', 'site.cfg'])

    metadata = dict(config.items('metadata'))
    options = dict(config.items('options'))

    metadata['py_modules'] = list(filter(None, metadata['py_modules'].split('\n')))
    metadata['classifiers'] = list(filter(None, metadata['classifiers'].split('\n')))

    return metadata, options

可见,这个connecter来自'metadata.cfg', 'site.cfg'两个文件,查看这两个配置文件,果然在site.cfg看到了connecter配置:

connector = C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

这里默认配置的是x86的,这就是为什么开始建议安装x86版本。

但是,即使安装的是x86,编译还是报错的,原因在于 setup.py文件中 client 变量,默认为"mariadbclient",指定的路径是include/mariadb。

对mariadb和mysql的区别没有太多概念,所以在这里采用暴力的处理方式,将client定义直接改为mysqlclient。

再次执行安装,完美~

另外,在查资料的时候发现一个安装包:https://pypi.org/project/MySQL-python/1.2.5/#files,本来想偷懒下载后直接安装的,但安装包运行时的安装路径是自动检索的,如果是用虚拟环境的,估计是需要通过添加环境变量,否则识别不到。

转载于:https://www.cnblogs.com/l200702031000/p/11104712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值