我在我的Django
應用程序中使用python-ldap
,並且一直工作正常。我目前正在升級我的項目中的很多代碼,這些代碼想要結束最新的高山和碼頭上的django。需要預先導入模塊,以避免錯誤
試圖執行./manage shell
(或任何其他管理命令)突然開始給我這個錯誤;
...
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
python -c 'import _ldap'
工作正常,./manage.py shell -c 'import _ldap'
barfs上述錯誤。
擺弄,我注意到,如果我很早,我的錯誤就消失了。
經過長時間的編輯和調試,我發現如果在https://github.com/django/django/blob/1.10/django/apps/config.py#L107之前加上if entry == 'django.contrib.postgres': import ldap
,django就能夠import ldap
。 L107上的 module.default_app_config
是django.contrib.postgres.apps.PostgresConfig
(https://github.com/django/django/blob/1.10/django/contrib/postgres/apps.py#L10)。
很明顯,postgres導入正在做一些事情。但是,它對ldap做了什麼?有沒有名稱相撞的地方?我如何進一步調試?
我不想要「只需在您的settings.py
之上導入ldap」的解決方案。這是一個錯誤,應該修復。
- 的Django:1.10
- 高山:3.4
- 的Python:2.7.12
- psycopg2:2.6.2
- 的libpq:9.5.3-R1
對此有何更新? –
不,我仍然在我的設置文件上有一個'import ldap'。你有更多的調試信息要添加嗎? – xeor
不是,我拿了你給我的東西,然後做了這個:https://gist.github.com/kingbuzzman/f32818da543bc2586d52ec52de8fa394除此之外:/ PS,謝謝你的代碼片段:P –