最近我在尝试 devstack 时遇到了这个错误:
错误:openstackclient.shell 引发异常:python-neutronclient 2.3.9.40.g9ed73c0 已安装,但 [] 需要 python-neutronclient<3,>=2.3.6
我做了一些调查,发现它可能是由 python 路径问题引起的。/opt/stack/目录和/usr/local/lib/python2.7/dist-packages目录下有两套openstack客户端安装(如python-neutronclient、python-novaclient等)。以neutronclient为例,我可以在这两个目录下找到:
/opt/stack/python-neutronclient
和
/user/local/lib/python2.7/dist-packages/python-neutronclient
我发现 python 会使用安装在 /opt/stack 下的客户端:
>>> sys.path
['', '/opt/stack/python-keystoneclient', '/opt/stack/python-glanceclient', ..., '/opt/stack/heat', '/opt/stack/tempest', '/usr/lib/python2.7'....]
为什么 python(devstack) 不使用 /usr/local/lib/python2.7 下的包?/opt/stack下的包有问题:egg-info/PKG-INFO中的版本信息不是有效的PEP440版本,比如'2.3.10.dev47.g11deb7f',会导致devstack失败配置 keystone 时出现上述错误:
我不记得我明确设置了 PYTHONPATH 变量。python或devstack如何在默认系统python路径之前设置/opt/stack/?我检查了 devstack 源代码,但没有找到任何有用的信息。任何人都可以帮忙提供一些提示吗?谢谢!