Pyldap(使用 Django Auth LDAP)安装在 python3 virtualenv
Pyldap (to use Django Auth LDAP) install in a python3 virtualenv
我正在尝试安装 pyldap to use it with django-auth-ldap 但是在安装时:
pip install pyldap
我得到:
In file included from Modules/LDAPObject.c:4:0:
Modules/common.h:10:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
重要
我正在使用 Virtualenv, 是在 python3 中创建的:
virtualenv -p python3 myvirtualenv
并且我已经安装了开发包(我在CentOS,在这个answer找到):
sudo yum install python-devel
sudo yum install openldap-devel
我已经尝试过的
创建两个新的虚拟环境:
- 一个带有 python 3.4(使用上面的命令)并且
pip install pyldap
不起作用(出现上述错误)
- 一个带有 python 2.7(使用上面的命令而不使用
-p python3
)并且 pip install pyldap
有效
以 root 身份安装包 sudo pip3 install pyldap
它可以工作,但是当我 运行 在 virtualenv 的 django 应用程序中时,我得到:
import ldap
ImportError: No module named 'ldap'
我假装使用 pyldap 正是因为它支持 python3 所以我不明白为什么会发生这种情况以及如何解决它。
如果您不能直接回答这个问题,但您知道我可以在 Django 中用于 Active Directory 身份验证的其他库,请评论这个问题。
您必须安装 python-dev 包(假设您使用 Ubuntu/Debian Linux)
sudo apt-get install python-dev
然后尝试使用不带 sudo 的 pip3 安装 pyldap。
您不能使用 sudo
将软件包安装到 virtualenv
中。您必须仅使用 sudo 来安装依赖项。例如
sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
已更新:但是如果您系统的默认版本 python 是 2.x 而您的 virtualenv 是 3.x 您实际上需要安装python3-dev 而不是 python-dev.
对于实际安装
source myvirtualenv/bin/activate
pip3 install pyldap
您在这里使用的是 pip3,因此请确保您的 virtualenv 已设置为使用 python 3 和如下命令:
virtualenv -p python3 myvirtualenv
您可以通过输入 python shell 查看实际使用的版本。
作为脚注,如果你真的想以 root 身份安装包:
sudo -i
source myvirtualenv/bin/activate
pip3 install pyldap
我正在尝试安装 pyldap to use it with django-auth-ldap 但是在安装时:
pip install pyldap
我得到:
In file included from Modules/LDAPObject.c:4:0:
Modules/common.h:10:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
重要
我正在使用 Virtualenv, 是在 python3 中创建的:
virtualenv -p python3 myvirtualenv
并且我已经安装了开发包(我在CentOS,在这个answer找到):
sudo yum install python-devel
sudo yum install openldap-devel
我已经尝试过的
创建两个新的虚拟环境:
- 一个带有 python 3.4(使用上面的命令)并且
pip install pyldap
不起作用(出现上述错误) - 一个带有 python 2.7(使用上面的命令而不使用
-p python3
)并且pip install pyldap
有效 以 root 身份安装包
sudo pip3 install pyldap
它可以工作,但是当我 运行 在 virtualenv 的 django 应用程序中时,我得到:import ldap ImportError: No module named 'ldap'
我假装使用 pyldap 正是因为它支持 python3 所以我不明白为什么会发生这种情况以及如何解决它。 如果您不能直接回答这个问题,但您知道我可以在 Django 中用于 Active Directory 身份验证的其他库,请评论这个问题。
您必须安装 python-dev 包(假设您使用 Ubuntu/Debian Linux)
sudo apt-get install python-dev
然后尝试使用不带 sudo 的 pip3 安装 pyldap。
您不能使用 sudo
将软件包安装到 virtualenv
中。您必须仅使用 sudo 来安装依赖项。例如
sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
已更新:但是如果您系统的默认版本 python 是 2.x 而您的 virtualenv 是 3.x 您实际上需要安装python3-dev 而不是 python-dev.
对于实际安装
source myvirtualenv/bin/activate
pip3 install pyldap
您在这里使用的是 pip3,因此请确保您的 virtualenv 已设置为使用 python 3 和如下命令:
virtualenv -p python3 myvirtualenv
您可以通过输入 python shell 查看实际使用的版本。
作为脚注,如果你真的想以 root 身份安装包:
sudo -i
source myvirtualenv/bin/activate
pip3 install pyldap