在我們的 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
由於 python 也無法在 Apache 中用於儀表板,因此不能每次都使用「匯出」設定環境變數。我們需要在其他地方解決問題。
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
為我工作,謝謝