web-dev-qa-db-ja.com

Visual Studio Code pylint: 'protorpc'をインポートできません

pylint in Visual Studio Code を使用して、Google App Engine(GAE)を開発しています PythonのCloud Endpoint API 。リントエラーを解決できません。エラーの原因はわかりませんが、推測で pylintprotorpcライブラリを見つけることができませんか?

enter image description here

Troubleshooting Linting で推奨される修正は、完全修飾python実行可能ファイルを指すようにワークスペース設定を構成することです。これを実行しましたが、lintエラーが残ります。

enter image description here

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ディレクトリに何かが欠けているとは思いません。

28
Jack

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"
],
11
Morad

ライブラリのパスを変更するとうまくいきました。 Ctrl + Shift + Pを押してpython interpreterを入力し、表示されている利用可能なものの1つを選択します。 1つはおなじみで(以前は正常に動作していたvirtualenvを指すように)、機能していました。使用しているpythonのバージョン(2.7または3.x)をメモし、それに応じて選択します

47
Ivan_ug

私は同じ問題に直面していました(VSコード)。以下の方法で解決しました

1)コマンドパレットから[インタープリター]コマンドを選択(Ctrl + Shift + P)

2)「通訳の選択」を検索します

3)インストール済みのpythonディレクトリを選択します

参照: https://code.visualstudio.com/docs/python/environments#_select-an-environment

21
SurajKj

私はすべての可能性をいじっていませんでしたが、少なくともこれはpythonバージョン関連の問題である可能性があるという印象がありました。理由はわかりませんが、私は自分の腸を信頼しました。

したがって、pythonPathをpython3に変更しました(デフォルト:python):

"python.pythonPath": "python3"

依存関係(pylint !!!を含む)を再インストールしました

pip3 install <package> --user

...とコードを再起動した後、すべてが正常に見えました。

HTH Kai

3
PapaKai

まず、python3パスが存在する場所を確認します

enter image description here

そして、VS Codeの設定でそのパスを追加するだけです、例えば:

"python.pythonPath": "/usr/local/bin/python3"
2
Harry

あなたの場合、次のコードを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バージョンに置き換える必要があります。

2
wizawu

Visual Studioのデフォルト設定は、インタープリターパスと同じである必要があります。

VSコードのデフォルト設定の変更:windows:File> Preferences> Settings

{
    "python.pythonPath": "C:\\Users\\Anaconda3\\pythonw.exe",
    "workbench.startupEditor": "newUntitledFile"
}

適切なインタープリターを見つける:windows: Ctrl+Shift+P->インタープリターを選択:

そのインタープリターのパスは、作業中のバージョンと同じでなければなりません。

1
Qing Yuan

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
1
Jack

正しいpythonおよびpylintが仮想envから使用されていることを確認した後でも、これらのエラーが発生していました。

最終的に、Visual Studioコードでは、A)プロジェクトディレクトリを開く、つまりB)Python仮想環境がありましたが、C)メインPythonを実行していたことがわかりました。より深い2つのレベルからプログラムします。これら3つのことは、すべてが機能するために同期する必要があります。

ここに私がお勧めするものがあります:

  1. Visual Studio Codeで、メインPythonプログラムを含むディレクトリを開きます。 (これはプロジェクトディレクトリのトップレベルである場合とそうでない場合があります。)

  2. [ターミナル]メニュー> [新しいターミナル]を選択し、同じディレクトリ内に仮想環境を直接作成します。

    python3 -m venv env
    
  3. 仮想環境にpylintをインストールします。サイドバーでPythonファイルを選択すると、Visual Studio Codeはこれを行うように提案します。または、source env/bin/activate、次にpip install pylintを選択します。

  4. エディターウィンドウの青い下のバーで、Pythonインタープリターenv/bin/pythonを選択します。または、設定に移動して「Python:Python Path」を設定します。これにより、Settings.jsonでpython.pythonPathが設定されます。

0
jrc