-1

最近、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 クライアント インストールの 2 つのスイート (python-neutronclient、python-novaclient など) があります。neutronclient を例にとると、次の 2 つのディレクトリの下にあります。

/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 のバージョン情報は、「2.3.10.dev47.g11deb7f」などの有効な PEP440 バージョンではなく、devstack が失敗する原因となりますkeystone のプロビジョニング時に上記のエラーが発生します。

PYTHONPATH 変数を明示的に設定したことを覚えていませんでした。python または devstack は、デフォルトのシステム python パスの前に /opt/stack/ をどのように設定しますか? devstack のソース コードを確認しましたが、有用な情報は見つかりませんでした。ヒントを教えてくれる人はいますか?ありがとう!

4

1 に答える 1

0

/usr/local/lib/python2.7/dist-packages の下にいくつかの *.pth ファイルがあり、そのうちの 1 つに devstack のデフォルト ディレクトリ (つまり、/opt/stack/python-neutronclient、およびすぐ)。そのため、これらのディレクトリは python パスの一部として取得されます。/opt/stack の下の openstack クライアント プロジェクト フォルダーを指すいくつかの Egg-link ファイルもあります。

~$ cat /usr/local/lib/python2.7/dist-package/python-neutronclient.egg-link
/opt/stack/python-neutronclient

そのため、これらの卵のリンク ファイルを削除し、不要なパス項目を *.pth から削除すると、問題が修正されます。/user/local/lib/python2.7/dist-packages にインストールされている openstack クライアント パッケージを最新バージョンに更新したままにしておいてください。これを行うには、「pip install」または「apt-get」を手動で実行するか、次のように devstack で「LIBS_FROM_GIT」を適宜設定します。

LIBS_FROM_GIT=python-neutronclient,neutron-vpnaas,neutron-fwaas,neutron-lbaas,python-keystoneclient,python-glanceclient,python-novaclient,python-cinderclient

したがって、devstack はこれらの openstack クライアント プロジェクトを /opt/stack (デフォルト) に git clone し、それらのパッケージを /usr/local/lib/python2.7/dist-packages にインストールします。

于 2015-01-21T08:54:04.437 に答える