Ich benutze python-ldap
innerhalb meiner Django
Anwendung, und das hat immer gut funktioniert. Ich bin gerade dabei, eine ganze Reihe von Deps in meinem Projekt zu verbessern, indem ich Sachen umherbewege, die mit dem neuesten Django auf Alpin und Docker enden wollen.Notwendigkeit, Modul vorzumportieren, um Fehler zu vermeiden
Der Versuch, ./manage shell
(oder irgendwelche anderen Verwaltungsbefehle) auszuführen, begann plötzlich, mir diesen Fehler zu geben;
...
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'
funktioniert gut, ./manage.py shell -c 'import _ldap'
barfs mit dem Fehler, der oben.
Fummeln herum, bemerkte ich, dass, wenn ich sehr früh, der Fehler ging import ldap
.
Nach einer langen Reise von Editing und Debugging, habe ich festgestellt, dass, wenn ich if entry == 'django.contrib.postgres': import ldap
vor https://github.com/django/django/blob/1.10/django/apps/config.py#L107 hinzufügen, wäre Django in der Lage, import ldap
. module.default_app_config
auf L107 ist django.contrib.postgres.apps.PostgresConfig
(https://github.com/django/django/blob/1.10/django/contrib/postgres/apps.py#L10).
So offensichtlich, Postgres Import tut etwas. Aber was macht es mit ldap? Gibt es irgendwo eine Namenskollision? Wie kann ich weiter debuggen?
Ich will nicht die Lösung „nur ldap auf Ihre settings.py
importieren“. Dies ist ein Fehler und sollte behoben werden.
- Django: 1.10
- Alpine: 3.4
- Python: 2.7.12
- psycopg2: 2.6.2
- libpq: 9.5.3-r1
Jedes Update auf das ?! –
Nein. Ich habe immer noch eine "Import-ID" über meine Einstellungsdatei. Haben Sie noch weitere Debug-Informationen? – xeor
Nicht wirklich, nahm ich, was Sie mir gaben und tat dies: https://gist.github.com/kingbuzzman/f32818da543bc2586d52ec52de8fa394 andere als das nein:/PS, danke für das Schnipsel: P –