LoginSignup
3
0

More than 1 year has passed since last update.

import [ライブラリ名]で[ライブラリ名:バージョン] (/usr/local/lib/python3.7/dist-packages), Requirement.parse('ライブラリ名>=バージョン'), {'libcst'}

Posted at

はじめに

「Google Cloud実践活用術」という本をやっていて、ライブラリのインポートでエラーがでました。
そのライブラリが環境に合っていないのではないかと疑ったのですが、自分のミスでした。

ContextualVersionConflict: (PyYAML 3.13 (/usr/local/lib/python3.7/dist-packages), Requirement.parse('pyyaml>=5.2'), {'libcst'})

というエラーが私の環境ではでています。

ライブラリ名は違えど、同じ原因でエラーがでる方いるかと思いましたのでまとめます。

環境

  • Google Colabratory

問題

以下のコードを実行した際にエラーが発生しました。

# セル1
from google.colab import drive
drive.mount('/content/drive')

# セル2
!pip install --upgrade google-cloud-speech

# セル3 (サービスアカウントキーと音声ファイルのフォルダに移動
cd drive/MyDrive/Colab\ Notebooks/cloudspeech

# セル4 (サービスアカウントキーを環境変数に設定)
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './credentials.json'

# セル5 (エラー)
from google.cloud import speech

エラーは以下となります。

---------------------------------------------------------------------------
ContextualVersionConflict                 Traceback (most recent call last)
<ipython-input-5-589439c37498> in <module>()
----> 1 from google.cloud import speech

9 frames
/usr/local/lib/python3.7/dist-packages/pkg_resources/__init__.py in resolve(self, requirements, env, installer, replace_conflicting, extras)
    775                 # Oops, the "best" so far conflicts with a dependency
    776                 dependent_req = required_by[req]
--> 777                 raise VersionConflict(dist, req).with_context(dependent_req)
    778 
    779             # push the new requirements onto the stack

ContextualVersionConflict: (PyYAML 3.13 (/usr/local/lib/python3.7/dist-packages), Requirement.parse('pyyaml>=5.2'), {'libcst'})

PyYAMLを3.13や5.2をインストールしたり、アンインストールしたりしたが解決できず
ネットを調べても情報が見つかりませんでした。

解決方法

コードの実行順序が悪いことがわかりました。

google-cloud-speechをインストールしたあとに、認証のためにカレントディレクトリを移動したのが原因でした。

以下のコードで動くようになりました。

# セル1
from google.colab import drive
drive.mount('/content/drive')

# セル2 (サービスアカウントキーと音声ファイルのフォルダに移動
cd drive/MyDrive/Colab\ Notebooks/cloudspeech

# セル3
!pip install --upgrade google-cloud-speech

# セル4 (サービスアカウントキーを環境変数に設定)
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './credentials.json'

# セル5 
from google.cloud import speech

ライブラリをインストールする前に、ディレクトリを移動すれば問題ありません。

おわりに

いままでやったことのないミスだったのですが、初心者の方などはやってしまうのかなと思いましたので一応まとめてみました。ライブラリ名を入れてしまったので記事にたどり着く人は少ないかと思いますが、誰かの役に立てばと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0