私はDjango
アプリケーション内にpython-ldap
を使用しており、いつもうまく機能しています。私は現在、私のプロジェクトで多くのdepsをアップグレードする過程にあり、アルパインとドッカーの最新の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に動作します。
私は気づいた、私は非常に早く、import ldap
エラーがなくなった。
長い編集とデバッグを経て、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をインポートする」というソリューションは欲しくないです。これはバグであり修正する必要があります。
- ジャンゴ: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 –