Python 需要预导入模块以避免错误
我在我的Python 需要预导入模块以避免错误,python,django,python-ldap,Python,Django,Python Ldap,我在我的Django应用程序中使用pythonlap,这一直都很好。我目前正在升级我的项目中的许多DEP,希望最终能在alpine和docker上得到最新的django 尝试执行/manageshell(或任何其他管理命令)时,突然出现此错误 ... File "/usr/lib/python2.7/site-packages/ldap/__init__.py", line 22, in <module> import _ldap ImportError: Error r
Django
应用程序中使用pythonlap
,这一直都很好。我目前正在升级我的项目中的许多DEP,希望最终能在alpine和docker上得到最新的django
尝试执行/manageshell
(或任何其他管理命令)时,突然出现此错误
...
File "/usr/lib/python2.7/site-packages/ldap/__init__.py", line 22, in <module>
import _ldap
ImportError: Error relocating /usr/lib/python2.7/site-packages/_ldap.so: ber_free: symbol not found
。。。
文件“/usr/lib/python2.7/site packages/ldap/_init__.py”,第22行,在
导入ldap
ImportError:重新定位/usr/lib/python2.7/site-packages//u ldap.so:ber\u free:未找到符号时出错
python-c'import\u ldap'
工作正常,/manage.py shell-c'import\u ldap'
会出现上述错误
在闲逛时,我注意到如果我很早导入ldap,错误就会消失
经过长时间的编辑和调试,我发现如果我在前面添加if entry='django.contrib.postgres':import ldap
,django将能够导入ldap
。
L107上的module.default\u app\u config
是django.contrib.postgres.apps.PostgresConfig
()
显然,postgres import正在做一些事情。但它对ldap做了什么?某处有名字冲突吗?如何进一步调试
我不想要“只需在设置.py
上导入ldap”的解决方案。这是一个bug,应该修复
- Django:1.10
- 阿尔卑斯山:3.4
- Python:2.7.12
- psycopg2:2.6.2
- libpq:9.5.3-r1
pythonldap
$ wget https://pypi.python.org/packages/8b/f3/8122b9d8999a67293a5a236f4b9eda009dce76835bb854fb848b1133dbe0/python-ldap-2.4.39.tar.gz
$ tar -xvf python-ldap-2.4.39.tag.gz
$ cd python-ldap-2.4.39
将此修补程序应用于setup.cfg
:
--- setup.cfg
+++ setup.cfg.patch
@@ -2,9 +2,9 @@
library_dirs = /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
include_dirs = /usr/include /usr/include/sasl /usr/local/include /usr/local/include/sasl
defines = HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
-extra_compile_args =
+extra_compile_args = -g
extra_objects =
-libs = ldap_r
+libs = ldap_r lber sasl2 ssl crypto
[install]
compile = 1
如您所见,我们只需将lber
、sasl2
、ssl
和crypto
添加到libs
然后,安装python ldap
:
# python setup.py build
# python setup.py install
资料来源:
- python ldap
import ldap
。你还有更多的调试信息要添加吗?没有,我拿了你给我的东西,做了这个:除此之外没有:/PS,谢谢你的代码片段:P