pylint in Visual Studio Code を使用して、Google App Engine(GAE)を開発しています PythonのCloud Endpoint API 。リントエラーを解決できません。エラーの原因はわかりませんが、推測で pylint はprotorpc
ライブラリを見つけることができませんか?
Troubleshooting Linting で推奨される修正は、完全修飾python実行可能ファイルを指すようにワークスペース設定を構成することです。これを実行しましたが、lintエラーが残ります。
protorpc
自体は次の場所にインストールされます。
~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0/protorpc
...これには、インポートできないremote.py
モジュールが含まれます。
__init__.py generate_python.py protojson.py transport.py
definition.py google_imports.py protourlencode.py util.py
descriptor.py message_types.py registry.py webapp
generate.py messages.py remote.py wsgi
generate_proto.py protobuf.py static
このパスを$PYTHONPATH
に追加しました( kitchen sink とともに):
export GOOGLE_CLOUD_SDK=~/google-cloud-sdk
export APPENGINE_PATH=$GOOGLE_CLOUD_SDK/platform/google_appengine
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk/api_lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib/protorpc-1.0/protorpc
アプリケーションはローカルで実行され、デプロイされたときにも実行されるため、これは単なるリントエラーのように見えますが、解決できないのはイライラします。
サードパーティライブラリを使用 状態:
標準環境のPythonランタイムには、Python標準ライブラリ、App Engineライブラリ、およびいくつかのバンドルされたサードパーティパッケージが含まれます。
このため、Iassumed「App Engineライブラリ」にはprotorpc
が含まれていますが、わかりません。さらに、 サンプルAPIにCloud Endpoints Frameworksライブラリを追加する では、アプリのlibディレクトリにgoogle-endpointsをインストールするだけで済みます。
pip install -t lib google-endpoints --extra-index-url=https://gapi-pypi.appspot.com/admin/nurpc-dev --ignore-installed
私のポイントは、何かをインストールしていないとは思わないことです。また、(Web)アプリのlibディレクトリに何かが欠けているとは思いません。
Visual Studioコードの設定ファイル(settings.json
)を開き、ライブラリパスを"python.autoComplete.extraPaths"
リストに追加します。
"python.autoComplete.extraPaths": [
"~/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2",
"~/google-cloud-sdk/platform/google_appengine",
"~/google-cloud-sdk/lib",
"~/google-cloud-sdk/platform/google_appengine/lib/endpoints-1.0",
"~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0"
],
ライブラリのパスを変更するとうまくいきました。 Ctrl + Shift + P
を押してpython interpreter
を入力し、表示されている利用可能なものの1つを選択します。 1つはおなじみで(以前は正常に動作していたvirtualenvを指すように)、機能していました。使用しているpythonのバージョン(2.7または3.x)をメモし、それに応じて選択します
私は同じ問題に直面していました(VSコード)。以下の方法で解決しました
1)コマンドパレットから[インタープリター]コマンドを選択(Ctrl + Shift + P)
2)「通訳の選択」を検索します
3)インストール済みのpythonディレクトリを選択します
参照: https://code.visualstudio.com/docs/python/environments#_select-an-environment
私はすべての可能性をいじっていませんでしたが、少なくともこれはpythonバージョン関連の問題である可能性があるという印象がありました。理由はわかりませんが、私は自分の腸を信頼しました。
したがって、pythonPathをpython3に変更しました(デフォルト:python):
"python.pythonPath": "python3"
依存関係(pylint !!!を含む)を再インストールしました
pip3 install <package> --user
...とコードを再起動した後、すべてが正常に見えました。
HTH Kai
あなたの場合、次のコードをvscodeのsettings.json
に追加します。
"python.linting.pylintArgs": [
"--init-hook='import sys; sys.path.append(\"~/google-cloud-sdk/platform/google_appengine/lib\")'"
]
Pipパッケージで問題が発生した他の人には、
"python.linting.pylintArgs": [
"--init-hook='import sys; sys.path.append(\"/usr/local/lib/python3.7/dist-packages\")'"
]
上記のpython3.7
をpythonバージョンに置き換える必要があります。
Visual Studioのデフォルト設定は、インタープリターパスと同じである必要があります。
VSコードのデフォルト設定の変更:windows:File> Preferences> Settings
{
"python.pythonPath": "C:\\Users\\Anaconda3\\pythonw.exe",
"workbench.startupEditor": "newUntitledFile"
}
適切なインタープリターを見つける:windows: Ctrl+Shift+P->インタープリターを選択:
そのインタープリターのパスは、作業中のバージョンと同じでなければなりません。
protorpcライブラリーを$PYTHONPATH
環境変数に追加することでこれを解決しました。具体的には、App Engineディレクトリにインストールされているライブラリを指しています。
export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0
これを~/.bash_profile
に追加し、マシンとVisual Studio Codeを再起動すると、インポートエラーはなくなりました。
完全を期すために、Pythonに関連するVisual Studio Codeの設定をnot変更しました。完全な~/.bash_profile
ファイル:
export PATH=/Users/jackwootton/protoc3/bin:$PATH
export PYTHONPATH=/Users/jackwootton/google-cloud-sdk/platform/google_appengine
export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0
# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/jackwootton/google-cloud-sdk/path.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/path.bash.inc'; fi
# The next line enables Shell command completion for gcloud.
if [ -f '/Users/jackwootton/google-cloud-sdk/completion.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/completion.bash.inc'; fi
正しいpython
およびpylint
が仮想envから使用されていることを確認した後でも、これらのエラーが発生していました。
最終的に、Visual Studioコードでは、A)プロジェクトディレクトリを開く、つまりB)Python仮想環境がありましたが、C)メインPythonを実行していたことがわかりました。より深い2つのレベルからプログラムします。これら3つのことは、すべてが機能するために同期する必要があります。
ここに私がお勧めするものがあります:
Visual Studio Codeで、メインPythonプログラムを含むディレクトリを開きます。 (これはプロジェクトディレクトリのトップレベルである場合とそうでない場合があります。)
[ターミナル]メニュー> [新しいターミナル]を選択し、同じディレクトリ内に仮想環境を直接作成します。
python3 -m venv env
仮想環境にpylintをインストールします。サイドバーでPythonファイルを選択すると、Visual Studio Codeはこれを行うように提案します。または、source env/bin/activate
、次にpip install pylint
を選択します。
エディターウィンドウの青い下のバーで、Pythonインタープリターenv/bin/python
を選択します。または、設定に移動して「Python:Python Path」を設定します。これにより、Settings.jsonでpython.pythonPath
が設定されます。