Python 3.7,MySql-Python构建轮失败

28

我刚接触 Python,正在尝试使用 Django 框架,并涉及到一些 MySQL。当我尝试执行 pip install mysqlclient 时出现了以下错误信息:


   Failed building wheel for mysqlclient
  Running setup.py clean for mysqlclient
Failed to build mysqlclient
Installing collected packages: mysqlclient
  Running setup.py install for mysqlclient ... error
    Complete output from command c:\users\ronanl~1\envs\py1\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\RONANL~1\\AppData\\Local\\Temp\\pip-install-pkbqy3t3\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\RONANL~1\AppData\Local\Temp\pip-record-moxwf7lu\install-record.txt --single-version-externally-managed --compile --install-headers c:\users\ronanl~1\envs\py1\include\site\python3.7\mysqlclient:
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.7
    copying _mysql_exceptions.py -> build\lib.win32-3.7
    creating build\lib.win32-3.7\MySQLdb
    copying MySQLdb\__init__.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\compat.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\connections.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\converters.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\cursors.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\release.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\times.py -> build\lib.win32-3.7\MySQLdb
    creating build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\__init__.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CR.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\ER.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\REFRESH.py -> build\lib.win32-3.7\MySQLdb\constants
    running build_ext
    building '_mysql' extension
    creating build\temp.win32-3.7
    creating build\temp.win32-3.7\Release
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Dversion_info=(1,3,13,'final',0) -D__version__=1.3.13 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include" "-Ic:\users\ronan lina\appdata\local\programs\python\python37-32\include" "-Ic:\users\ronan lina\appdata\local\programs\python\python37-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" /Tc_mysql.c /Fobuild\temp.win32-3.7\Release\_mysql.obj /Zl
    _mysql.c
    _mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
> 
> 
> Command "c:\users\ronanl~1\envs\py1\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\RONANL~1\\AppData\\Local\\Temp\\pip-install-pkbqy3t3\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\RONANL~1\AppData\Local\Temp\pip-record-moxwf7lu\install-record.txt --single-version-externally-managed --compile --install-headers c:\users\ronanl~1\envs\py1\include\site\python3.7\mysqlclient" failed with error code 1 in C:\Users\RONANL~1\AppData\Local\Temp\pip-install-pkbqy3t3\mysqlclient\

有谁知道如何修复这个问题吗?


这可能会有所帮助:https://stackoverflow.com/a/4290261/747744 - Eugene Primako
9
抱歉,我不会翻译中文。但是,如果您需要帮助安装Python 3.7的mysqlclient模块,您可以运行pip install mysqlclient==1.3.12来安装适用于Python 3.6的可预构建的模块。 - Alasdair
2
你可以尝试这个非官方的wheel https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient - iklinac
2
很高兴你已经解决了。最好使用最新的3.6.x版本,以确保您获得最新的错误和安全修复。 - Alasdair
2
pip install mysqlclient==1.3.12 对我很有帮助。我原本在使用Python 3.7,然后卸载了它并安装了Python 3.6.5。然后那个命令对我起作用了。 - Shamsul Arefin
安装这个“sudo apt-get install libssl-dev”对我解决了问题。 - Junaid
13个回答

24

在安装 Python 3.7 的 mysqlclient 之前,您需要在系统中安装以下依赖项。

sudo apt-get install python3.7-dev default-libmysqlclient-dev

希望这可以帮到您。


ubuntu 19.04 上使用 python 3.7.3pip 19.1.1 工作。 - aasmpro
之后我也运行了 pip install mysqlclient - Imran Zahoor

23

我在Ubuntu上安装了以下库,之后问题得到了解决。

sudo apt-get install libssl-dev

然后我能够使用以下命令安装mysqlclient

pip install mysqlclient

5

目前官方网站上尚未提供适用于Python 3.7的MySQL连接器,但您可以通过安装特定版本的Windows和Python并使用wheel修复此问题。

对于64位Windows和Python 3.7,解决方案为pip install (ex/dir)/mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

请检查下面的链接并下载适用于您系统的特定版本的wheel。通过使用“pip install(完整路径与文件名,在我的情况下是 - “pip install C:\Users\%user%\Downloads\mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl”)来下载并安装特定版本的wheel。


5

这应该可以工作。

首先要做的是这个。

sudo apt-get install python3.7-dev

然后

pip install mysqlclient

4

3
您需要安装 "mysqlclient-1.4.1-cp37-cp37m-win32.whl" (32位) 文件。
  1. https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient下载32位文件。
  2. 如果您的文件在下载文件夹中,请在cmd中输入以下命令:

    i. cd C:\Users\Nour Noby\Downloads ["Nour Noby"应更改]

    ii. pip install mysqlclient-1.4.1-cp37-cp37m-win32.whl [“mysqlclient-1.4.1-cp37-cp37m-win32.whl”应替换为您下载的文件名 ]


2
截止至2019年,在MacOS上平稳运行pip install mysqlclient的方法如下:
执行brew info openssl并按照底部的命令操作。
"Original Answer"的翻译是"最初的回答"。
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc

其他方法:

  • brew install/upgrade/reinstall mysql:对我来说没有解决问题,但有一个好的副作用,可以确保您的安装是干净的。
  • brew install mysql-connector-c:要使其工作,您必须取消链接mysql,这会破坏您的设置,并且对我来说也没有解决问题。
"Original Answer"翻译成"最初的回答"

2
确保您已经使用Python完成了必要的操作...
并且全局安装...(非虚拟环境)
sudo apt-get install mysql-server pip install --upgrade setuptools
我曾遇到同样的问题,因为我安装了默认的Python2.7.15版本,即使对Python(即Python2)进行了必要的操作,Python3也会出现问题。
对我有效的方法是(实际上最后一个使其工作,但我认为在我的带有Python3的虚拟环境中它们同样是必需的)
sudo apt-get install libmysqlclient-dev
sudo apt-get install python3-pymysql
sudo apt-get install python3.6-dev

在虚拟环境中使用Python 3.7。原始回答应该是“Original Answer”。我也必须经历...

0
使用以下命令: sudo apt-get install libssl-dev

1
请尝试解释得更详细一些。 - Calos


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接