Python 在Windows 10上安装django ldapdb

Python 在Windows 10上安装django ldapdb,python,django,windows,ldap,openldap,Python,Django,Windows,Ldap,Openldap,我正在尝试扩展现有的LDAP数据库,以允许用户注册WLAN设备。为此,我想利用Django框架。一个很有前途的插件是我想尝试 主要问题 问题是如何让这个插件在我的Windows10机器上运行。我正在使用Python 3.6.1,并希望在JetBrain的PyCharm中进行开发。 通过pip install django ldapdb安装插件会导致错误(省略号表示遗漏日志): 其中提到了对LDAP包的依赖关系。由于我使用Windows,我不知道如何安装它们 进一步调查 经过艰难的搜索和大量的实验

我正在尝试扩展现有的LDAP数据库,以允许用户注册WLAN设备。为此,我想利用Django框架。一个很有前途的插件是我想尝试

主要问题 问题是如何让这个插件在我的Windows10机器上运行。我正在使用Python 3.6.1,并希望在JetBrain的PyCharm中进行开发。
通过pip install django ldapdb安装插件会导致错误(省略号表示遗漏日志):

其中提到了对LDAP包的依赖关系。由于我使用Windows,我不知道如何安装它们

进一步调查 经过艰难的搜索和大量的实验,我发现了一种产生不同错误的方法,我认为这是一个较小的问题

我尝试安装Python LDAP包(
pip install Python LDAP
),结果出现语法错误:

Collecting python-ldap
  Using cached python-ldap-2.4.32.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\J0hj0h\AppData\Local\Temp\pip-build-snzefz4h\python-ldap\setup.py", line 53
        print name + ': ' + cfg.get('_ldap', name)
                 ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in  C:\Users\J0hj0h\AppData\Local\Temp\pip-build-snzefz4h\python-ldap\
我对它了解不多,但读到可以将这些包作为轮子从中安装。两者都会失败并出现错误:

python_ldap-2.4.32-cp27-cp27m-win_amd64.whl is not a supported wheel on this platform.
几乎同样的情况也适用于美国。我尝试了三个最新版本(
pyldap-2.4.28‑cp35‑cp35m‑win‑amd64.whl
pyldap-2.4.28‑cp36‑cp36m‑win32.whl
pyldap-2.4.28‑cp36‑cp36m‑wind64.whl
),其中只有32位版本(
pyldap-cp2.4.whl‑amd64.whl>)安装成功

然后我就可以安装Django插件了(
pip install Django ldapdb
)。在Django项目中,我启动了一个名为
ldap
的应用程序,并根据插件的文档修改了
settings.py

DATABASES = {
    'ldap': {
        'ENGINE': 'ldapdb.backends.ldap',
        'NAME': 'ldap://localhost',
        'USER': 'cn=admin,dc=example,dc=org',
        'PASSWORD': 'admin',
    },
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
DATABASE_ROUTERS = ['ldapdb.router.Router']
如果我知道使用PyCharm运行项目,则错误会更改为模块
ldap.filter
缺失:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x03A1DBB8>
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
    self.check(display_num_errors=True)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\checks\model_checks.py", line 30, in check_all_models
    errors.extend(model.check(**kwargs))
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\base.py", line 1282, in check
    errors.extend(cls._check_fields(**kwargs))
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\base.py", line 1357, in _check_fields
    errors.extend(field.check(**kwargs))
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\fields\__init__.py", line 909, in check
    errors = super(AutoField, self).check(**kwargs)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\fields\__init__.py", line 219, in check
    errors.extend(self._check_backend_specific_checks(**kwargs))
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\fields\__init__.py", line 321, in _check_backend_specific_checks
    if router.allow_migrate(db, app_label, model_name=self.model._meta.model_name):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\utils.py", line 293, in allow_migrate
    for router in self.routers:
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\utils.py", line 251, in routers
    router = import_string(r)()
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\utils\module_loading.py", line 20, in import_string
    module = import_module(module_path)
  File "C:\Program Files (x86)\Python36-32\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 936, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\ldapdb\__init__.py", line 8, in <module>
    import ldap.filter
ModuleNotFoundError: No module named 'ldap.filter'
由启动的线程中未处理的异常 回溯(最近一次呼叫最后一次): 包装器中的文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\utils\autoreload.py”,第227行 fn(*args,**kwargs) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\core\management\commands\runserver.py”,第125行,在内部运行 self.check(display\u num\u errors=True) 检查文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\core\management\base.py”,第359行 包括部署检查=包括部署检查, 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\core\management\base.py”,第346行,在运行检查中 返回检查。运行检查(**kwargs) 运行检查中的文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\core\checks\registry.py”,第81行 新建错误=检查(应用程序配置=应用程序配置) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\core\checks\model\u checks.py”,第30行,在check\u all\u models中 错误。扩展(模型检查(**kwargs)) 检查文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\models\base.py”,第1282行 错误。扩展(cls.\U检查\U字段(**kwargs)) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\models\base.py”,第1357行,在检查字段中 错误.扩展(字段.检查(**kwargs)) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\models\fields\\uuuu init\uuu.py”,第909行,处于检查状态 错误=超级(自动字段,自)。检查(**kwargs) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\models\fields\\ uuuu init\uuuuu.py”,第219行,处于检查状态 错误.扩展(自我检查后端检查特定检查(**kwargs)) 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\models\fields\\uuuuu init\uuuuuu.py”,第321行,在后端特定的\u检查中 如果路由器.allow\u迁移(数据库,应用程序标签,模型名称=self.model.\u元模型名称): 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\utils.py”,第293行,在allow\u migrate中 对于self.routers中的路由器: 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\utils\functional.py”,第35行,在__ res=instance.\uuuu dict\uuuu[self.name]=self.func(实例) 路由器中的文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\db\utils.py”,第251行 路由器=导入字符串(r)() 文件“C:\Program Files(x86)\Python36-32\lib\site packages\django\utils\module\u loading.py”,第20行,导入字符串 模块=导入模块(模块路径) 导入模块中的文件“C:\Program Files(x86)\Python36-32\lib\importlib\\uuuuu init\uuuuuuu.py”,第126行 return _bootstrap._gcd_import(名称[级别:],包,级别) 文件“”,第978行,在_gcd_import中 文件“”,第961行,在“查找”和“加载”中 文件“”,第936行,在_find_和_load_unlocked中 文件“”,第205行,在调用中删除了帧 文件“”,第978行,在_gcd_import中 文件“”,第961行,在“查找”和“加载”中 文件“”,第950行,在“查找”和“加载”中解锁 文件“”,第655行,已加载 exec_模块中第678行的文件“” 文件“”,第205行,在调用中删除了帧 文件“C:\Program Files(x86)\Python36-32\lib\site packages\ldapdb\\uuuu init\uuuu.py”,第8行,在 导入ldap.filter ModuleNotFoundError:没有名为“ldap.filter”的模块
安装未解决此问题

建议?
我有点疯狂,因为我不知道如何解决这个问题,以及什么可能导致它。你知道原因是什么,以及如何让django ldapdb在Windows上工作吗?

这些库不适用于Windows。但是,使用Docker可以运行Debian容器并安装它们。缺少的库包括:

libldap2-dev
libsasl2-dev

安装这些可以安装
django ldapdb

如果要使用
Python3
,必须安装
pyldap
<代码>python ldap不支持python 3

因此,首先,使用命令下载并安装它

pip install pyldap‑2.4.37‑cp36‑cp36m‑win32.whl
然后您还可以安装
django ldapdb

    (...)
    running build_ext
    building '_ldap' extension
    creating build\temp.win32-3.6
    creating build\temp.win32-3.6\Release
    creating build\temp.win32-3.6\Release\Modules
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=2.4.28 -IModules -I/usr/include -I/usr/include/sasl -I/usr/local/include -I/usr/local/include/sasl "-Ic:\program files (x86)\python36-32\include" "-Ic:\program files (x86)\python36-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /TcModules/LDAPObject.c /Fobuild\temp.win32-3.6\Release\Modules/LDAPObject.obj
    LDAPObject.c
    c:\users\j0hj0h\appdata\local\temp\pip-build-rr10feu9\pyldap\modules\errors.h(8): fatal error C1083: Cannot open include file: 'lber.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2

    ----------------------------------------
Command ""c:\program files (x86)\python36-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\J0hj0h\\AppData\\Local\\Temp\\pip-build-rr10feu9\\pyldap\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\J0hj0h\AppData\Local\Temp\pip-4vbw823_-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\J0hj0h\AppData\Local\Temp\pip-build-rr10feu9\pyldap\
pip install django-ldapdb

您可以尝试在Windows上安装OpenLDAP,以下是安装程序:。感谢您的评论。我尝试从另一个下载,但没有解决问题。谢谢
pip install django-ldapdb