在virtualenv中安装python-dev



我正在尝试在我的virtualenv中安装mysqlclient for python。它失败的原因如下:

#include "Python.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

经过一些研究,我发现我需要安装python-dev。我把它安装在我的主目录中(即/usr/bin…),但它不是虚拟安装的,但每次我键入:

sudo apt-get install python-dev

我得到以下回复:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
python-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 453 not upgraded.

显示其可用性,在virtualenvmysqlclient之外正确安装。问题是如何将python dev安装纠正为virtualenv

我目前在Ubuntu 20中遇到问题,默认的python是python 3.8。当我尝试在pipenv创建的需要使用python 3.9的虚拟机中安装Pillow时,这会导致问题。

到目前为止,我发现的最简单的解决方案是为3.9 安装python-dev

sudo apt install python3.9-dev

以前我安装了python3-dev,它总是默认为3.8

pyenv(https://github.com/pyenv/pyenv)它非常神奇,因为它允许您安装不同版本的Python(包括dev)(使用pyenv install --list列出可用版本)。有时我会遇到";未找到Python库";sort和Ubuntu建议使用"--启用共享";。这可以通过pyenv完成,如下所示:

CONFIGURE_OPTS=--enable-shared pyenv install 3.9-dev

还值得一看pyenv-virtualenv(https://github.com/pyenv/pyenv-virtualenv)。

也许不是最好的方法,但我的解决方案是安装miniconda。你也可以尝试更大的蟒蛇分布。我相信这些发行版内置了python-dev。

这是因为virtualenv没有将include和lib目录链接到virtualenv的目录。我通过使用anaconda虚拟环境来解决这个问题。愿望有帮助。

在Ubuntu 16.04上,我按照这些说明成功地用python3-dev设置了一个Python虚拟环境。

我相信python-dev已经安装好了。编译时可能没有包含头文件路径。

u可以通过以下方式搜索Python.h:

find <venv folder> | grep Python.h

如果它在您的虚拟环境中找不到文件,那么应该使用下面这样的简单命令来安装它:

pip install python-dev (or python2/3.x-dev)

一旦你有了路径,你就需要通过添加该路径来编译你的文件,例如,如果你使用的是conda:

gcc <<your prev command args>> -I/home/<user>/anaconda3/envs/<<vinv_name>>/include/python3.7m/

如果使用make实用程序,还可以使用export as:在C_INCLUDE_path(如果使用C++,则为CPP_INCLUDE-path)中设置路径

export C_INCLUDE_PATH=/home/<user>/anaconda3/envs/<<vinv_name>>/include/python3.7m/

最新更新