Python モジュール パスが見つかりません

Python モジュール パスが見つかりません

Openstack のインストールで何かひどい問題が発生しました。Python は正常に動作しなくなりました。モジュール パスが見つかりません:

root@controller:/root# keystone token-get
Traceback (most recent call last):
  File "/usr/bin/keystone", line 6, in <module>
    from keystoneclient.shell import main
ImportError: No module named shell

環境変数経由でモジュール パスを追加すると、このエラーは消えます... (他のエラーは現時点では問題ではありません)

root@controller:/root# export PYTHONPATH=/usr/lib/python2.7/dist-packages
root@controller:/root# keystone token-get
Authorization Failed: Unable to establish connection to http://controller:35357/v2.0/tokens

奇妙な詳細: 環境変数を設定していなくても、python -m site は正しいパスを認識しているようです:

sys.path = [
'/root',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
]
USER_BASE: '/root/.local' (doesn't exist)
USER_SITE: '/root/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

ダッシュボードの Apache では Python も動作しないため、毎回「export」で環境変数を設定するという選択肢はありません。他の場所で問題を修正する必要があります。

Python インクルード パスはどこで設定されていますか?

アップデート:

ライブラリ パスの順序が重要なようです。これは動作します:

PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages; keystone token-get

これは機能しません:

PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages; keystone token-get

答え1

export PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages; keystone token-get

私には効果がありました、ありがとう

関連情報