使用pip和Python 3.6在Ubuntu 16.04上安装mysqlclient时出错

And*_*der 20 python ubuntu python-3.6

尝试使用pip + Python 3.6Ubuntu 16.04 Xenial上安装mysqlclient时出现一个奇怪的错误:

 pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

输出:

 _mysql.c:40:20: fatal error: Python.h: No such file or directory
 compilation terminated.
 error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

按照安装要求,我已经尝试安装所需的库,但到目前为止还没有运气.

sudo apt-get install python3-dev libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

有人知道这个问题的解决方法吗?

And*_*der 39

我发现了问题,似乎在python3.6中安装mysqlclient 需要python3.6-dev.

只需打开一个终端并运行以下命令:

sudo apt-get install python3.6-dev libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

尝试安装库时,您可能会收到以下错误:

Reading state information...
E: Unable to locate package python3.6-dev
E: Couldn't find any package by glob 'python3.6-dev'
E: Couldn't find any package by regex 'python3.6-dev'
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,请先尝试添加以下存储库:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

执行此操作后,您应该能够安装python3.6python3.6-dev软件包.


Bar*_*ing 5


我在 python 3.6.3 上安装 mysqlclient 时遇到问题,所以我降级到版本 3.6.2 并且它工作了。

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev  libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
cd /usr/bin
sudo wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
sudo tar xzf Python-3.6.2.tgz
cd Python-3.6.2
sudo ./configure --enable-optimizations
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

python3.6 应该指向 3.6.2

python --version # Python 3.6.2
Run Code Online (Sandbox Code Playgroud)

现在安装mysqlclient

python3.6 -m pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

阅读更多

  • 我不必降级我的版本,但“sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev”中列出的一些软件包显然丢失了就这样完成了。所以谢谢! (2认同)