Pyldap(使用Django Auth LDAP)安装在python3 virtualenv

时间:2016-04-27 15:31:15

标签: python django active-directory ldap virtualenv

我正在尝试安装pyldap以便与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

我已经尝试了什么

创建两个新的virtualenv:

  • 一个使用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身份验证的其他库,请评论这个问题。

2 个答案:

答案 0 :(得分:3)

您无法使用virtualenv将程序包安装到sudo。您必须仅使用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

答案 1 :(得分:0)

你必须安装python-dev包(假设你使用的是Ubuntu / Debian Linux)

sudo apt-get install python-dev

然后尝试使用不带sudo的pip3安装pyldap。