在virtualenv

时间:2017-08-14 18:24:25

标签: python installation virtualenv

我正在尝试在我的virtualenv中为python安装mysqlclient。它失败了以下内容:

 #include "Python.h"

                ^

compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

经过一番研究,我发现我需要安装python-dev。我把它安装在我的主目录中(即/ usr / bin ...)但它没有安装virtualenv但每次我输入:

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.

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

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在Ubuntu 16.04上,我遵循these instructions成功地使用python3-dev建立了Python虚拟环境。

答案 2 :(得分:0)

也许不是最好的方法,但是我的解决方案是安装miniconda。您也可以尝试使用更大的Anaconda发行版。我相信这些发行版都内置了python-dev。

答案 3 :(得分:0)

我目前在 Ubuntu 20 中遇到问题,默认 python 是 python 3.8。当我尝试在需要使用 python 3.9 的 Object.defineProperty(HTMLElement.prototype, 'scrollHeight', { configurable: true, value: 500 }) Object.defineProperty(HTMLElement.prototype, 'clientHeight', { configurable: true, value: 10 }) 创建的 virtualenv 中安装 Pillow 时,这会导致问题。

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

pipenv

以前我安装了 sudo apt install python3.9-dev ,它总是默认为 3.8

答案 4 :(得分:-1)

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

您可以通过以下方式搜索 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(或 CPP_INCLUDE_PATH,如果使用 C++)中设置路径:

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