ImportError:apiclient.discoveryという名前のモジュールはありません


153

Google App EngineのPythonでこのエラーが発生しましたが、Google Translate APIを使用しましたが、修正方法がわかりません。

<module>
from apiclient.discovery import build
ImportError: No module named apiclient.discovery

Google App Engine SDKを示す環境設定して、Google Apps Engineに再度アップロードすると、常にエラーが発生します

エラー:サーバーエラー

サーバーでエラーが発生したため、リクエストを完了できませんでした。問題が解決しない場合は、問題を報告し、このエラーメッセージと、それを引き起こしたクエリについて言及してください。

修正方法を教えてください、

ありがとう

更新: Nijjinのヘルプに従い、以下のフォルダーを追加して問題を修正しました。

apiclient, gflags, httplib2, oauth2client, uritemplate

それでも問題が解決しない場合は、このページの回答の下を参考にして詳細を確認してください。例。:Varumの回答など...


apiclientappengineプロジェクトにコードディレクトリを含めましたか?
Nijin Narayanan 2013

外部ライブラリのことですか?(/ Google App Engine SDK / google-api-python-client / apiclient / discovery.py)?IDEA IntelliJを使用しています。詳細情報を提供していただきありがとうございます
Huy Tower

ユーザーのホームでpip install libsを実行しているため、プログラムをsudoとして実行していないことを確認してください。その後、rootユーザーにはこれらのライブラリがありませんpip show PyDrive
deFreitas

cloud.google.com/sdk/docsがプロセスに役立つ場合があります
Xiao

これは最初にアクセスしたページですが、最初にNijinとVarunから以下の回答を逃しました。リンクからの指示に従って、モジュールをアプリの作業ディレクトリに「サードパーティパッケージ」として含める必要があります。Linux Ubuntuでは、-tスイッチを使用してlib /にインストールするときにもsudoを使用する必要がありました。
錬金術

回答:


240

この単純なインストールでこれらの依存関係を取得できるはずです:

sudo pip install --upgrade google-api-python-client

これはpythonのクイックスタートページで説明されています


7
それをしただけで同じエラーが発生します。まあ私はそれをインストールしました、C:\>C:\Python27\Scripts\easy_install-script.py --upgrade google-api-python-clientそしてそれは言ってInstalled c:\python27\lib\site-packages\google_api_python_client-1.3.1-py2.7.egg、再びインストールしようとしていますgoogle-api-python-client 1.3.1 is already the active version in easy-install.pth
エドマンド・スルザノク

5
回答で提供されたリンクは
Nathan

4
なぜsudo私はうまくいかずに上記のコマンドが機能しないのか、私にはわかりません。
mtk '13年

5
Python 3の場合、上記のコマンドでpipをpip3に置き換える必要があります。信じられない人もいるでしょう。
Emmet B

1
Debian 9 Stretchを使用するコマンドsudo apt-get install python-googleapi python-oauth2clientとコマンドを使用しましたsudo apt-get install python3-googleapi python3-oauth2client。それは完璧に機能し、私は1つのパッケージマネージャーで十分なので、この方法を好みます。
ジェラール

120

apiclientライブラリの元の名前でした。
ある時点で、に切り替えられましたgoogleapiclient

コードがGoogle App Engineで実行されている場合、どちらも機能するはずです。

google-api-python-clientがインストールされている状態で自分でアプリケーションを実行している場合は、どちらも動作するはずです。

ただし、パッケージのモジュールのソースコードをapiclient__init__.py見ると、apiclient下位互換性のためにモジュールが保持されているだけであることがわかります。

googleapiclientのエイリアスとしてapiclientを保持します。

そのgoogleapiclientため、apiclientエイリアスはレガシーコードを壊さないように維持されているだけなので、コードで実際に使用する必要があります。

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

詳細:この問題(Python 3.5.2)が発生importしました。ステートメントの名前を変更すると修正されました。私はGoogleのサンプルコードをPyCharmのファイルに移動しましたが、PyCharm apiclientがそのパッケージをインストールするように促したとき、そのパッケージをインストールしました。インストールしたモジュールを実際に調べたところ、そのサイズは小さく、Googleとは関係がないようでした。
Nathan Wailes 2017

10

apiclientは、appengineランタイムが提供するサードパーティライブラリのリストにありません:http : //developers.google.com/appengine/docs/python/tools/libraries27

あなたはコピーする必要がapiclientプロジェクトディレクトリに&あなたはこれらをコピーする必要がuritemplatehttplib2過ぎます。

注:ドキュメントリストに含まれていないサードパーティライブラリは、appengineプロジェクトディレクトリにコピーする必要があります


1
私はGoogle Translate APIのPythonを使用したため、次のものが必要です:apiclient、gflags、httplib2、oauth2client、uritemplate。ありがとう:D
Huy Tower

Jorvisの返答は、アプリケーションを実行していない人により関連します。私が間違っているなら私を訂正してください。
外れ値2014年

これは本当にapiclientがデフォルトのライブラリに含まれていないということですか?私たちはapiclientをPyCharmのGoogle App Engine SDKディレクトリに直接リストされたディレクトリとして見ることができます。とは言っても、そこには表示されていますが、彼の質問にはまだエラーが含まれています。
プラクシテレス2017年

8

上記の解決策のいずれもうまくいかない場合は、Anacondaを介してpythonをインストールした可能性があるかどうかを検討してください。この場合は、condaを使用してgoogle APIライブラリをインストールすると修正される可能性があります。

実行:

python --version

あなたがのようなものを手に入れたら

Python 3.6.4 :: Anaconda, Inc.

次に試してください:

conda install google-api-python-client

bgoodrがコメントで指摘したように、Google APIライブラリを取得するには、チャネル(リポジトリと考える)を指定する必要がある場合があります。これを書いている時点では、これはコマンドを実行することを意味します:

conda install -c conda-forge google-api-python-client

詳しくはhttps://anaconda.org/conda-forge/google-api-python-clientをご覧ください


2
実際にはチャネルが必要なようです。anaconda.org/conda-forge/google-api-python-clientを参照してください (-cオプションを参照)。
bgoodr 2018年

2
@bgoodrありがとうございます。あなたのコメントを回答に組み込んだ。
ジョナサンハンセン

7

google-api-python-clientインストール済みであることを確認してください。apiclientインストールしている場合は、衝突が発生します。したがって、以下を実行します。

sudo pip uninstall apiclient

6

App Engineプロジェクトの場合、次のように入力してローカルにlibをインストールする必要があります

pip install -t lib google-api-python-client

詳細はこちら


:私はベンダーとしてのlibディレクトリを追加するだけでなく、ここで答えを従わなければならなかったが、これは私は、働いて得たstackoverflow.com/a/29681061/1024735
kevinmicke


5

私はパッケージを再インストールして問題を修正しました:

pip install --force-reinstall google-api-python-client

5

python3の場合、これは私にとってうまくいきました:

sudo pip3 install --upgrade google-api-python-client

4

URITemplateモジュールのインストールのバグのため、同じ問題が発生しました。

これは問題を解決しました:

pip install --force-reinstall uritemplate.py

3

Googleカレンダーからの最近のカレンダーイベントを解析するプロジェクトに取り組んでいるときに、同じエラーが発生しました。

標準のインストールをpipで使用しても機能しませんでした。必要なパッケージを取得するために、次のことを行いました。

ソースに直接移動します。ここにgoogle-api-python-clientのリンクがありますが、別の言語が必要な場合は、それほど異なってはいけません。

https://github.com/google/google-api-python-client

左上にある緑色の[クローンまたはダウンロード]ボタンをクリックし、zipファイルとして保存します。zipをプロジェクトフォルダに移動し、そこに解凍します。次に、作成したフォルダーからすべてのファイルを切り取り、プロジェクトフォルダーのルートに戻します。

はい、これは作業スペースを乱雑にしますが、多くのコンパイラにはファイルを非表示にする方法があります。

これを行った後、標準

from googleapiclient import discovery

よく働く。

お役に立てれば。


2

「google-api-python-client」には以下が必要です。

pip install uritemplate.py

GAE開発サーバーの問題を修正するには:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery

1

同じ問題が発生しました。これはうまくいきました:

>>> import pkg_resources
>>> pkg_resources.require("google-api-python-client")
[google-api-python-client 1.5.3 (c:\python27), uritemplate 0.6 (c:\python27\lib\site-packages\uritemplate-0.6-py2.7.egg), six 1.10.0 (c:\python27\lib\site-packages\six-1.10.0-py2.7.egg), oauth2client 3.0.0 (c:\python27\lib\site-packages\oauth2client-3.0.0-py2.7.egg), httplib2 0.9.2 (c:\python27\lib\site-packages\httplib2-0.9.2-py2.7.egg), simplejson 3.8.2 (c:\python27\lib\site-packages\simplejson-3.8.2-py2.7-win32.egg), six 1.10.0 (c:\python27\lib\site-packages\six-1.10.0-py2.7.egg), rsa 3.4.2 (c:\python27\lib\site-packages\rsa-3.4.2-py2.7.egg), pyasn1-modules 0.0.8 (c:\python27\lib\site-packages\pyasn1_modules-0.0.8-py2.7.egg), pyasn1 0.1.9 (c:\python27\lib\site-packages\pyasn1-0.1.9-py2.7.egg)]

>>> from apiclient.discovery import build
>>> 

1

sudoを使用した場合にのみ機能しました。

sudo pip install --upgrade google-api-python-client


0

これを使って

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.