3

私は自分のアプリケーション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'上記のエラーで正常に動作します。

import ldapいじってみると、非常に早い段階でエラーが解消されたことに気付きました。

編集とデバッグの長い旅の後、https://github.com/django/django/blob/1.10/django/apps/config.py#L107if entry == 'django.contrib.postgres': import ldapの前に追加すると、django で. L107 は( https://github.com/django/django/blob/1.10/django/contrib/postgres/apps.py#L10 ) です。import ldapmodule.default_app_configdjango.contrib.postgres.apps.PostgresConfig

したがって、明らかに、postgre import は何かを行っています。しかし、それはldapで何をしているのですか? どこかで名前の衝突がありますか? さらにデバッグするにはどうすればよいですか?

「あなたの上にldapをインポートするだけ」の解決策は必要ありませんsettings.py。これはバグであり、修正する必要があります。

  • ジャンゴ: 1.10
  • アルパイン: 3.4
  • パイソン: 2.7.12
  • psycopg2: 2.6.2
  • libpq: 9.5.3-r1
4

2 に答える 2

0

これにぶつかり、python-ldap を最新バージョン (3.0.0) にアップグレードすると、他の回答で説明されている修正が含まれているため、問題が解決しました。

于 2018-04-06T07:47:56.953 に答える