質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.22%

vscodeでpygameのインテリセンスを有効にしたい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 175

yumemakura

score 1

前提・実現したいこと

vscodeでpygameのインテリセンスを有効にしたい。

```ここに言語名を入力
python

試したこと!

VSCode・インテリセンスが効かない?を解消 参考サイト
ターミナルからpython3 → import pygame → pygame
と打って出てきたパスをpython.autoComplete.extraPathsに記入しましたがインテリセンスが有効になりません。
[イメージ説明](d6104a84ba3aa2ce189b66acfbcf495c.png)

補足情報(FW/ツールのバージョンなど)

macOS Catalina
python 3.9.1
pygame 2.0.1
anacondaは使用しておりません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

ウィンドウ左下にpythonの表示があるのでそれをクリックしてpygameをインストールしている環境に切り替えて見てはどうでしょうか。
私の環境ではそれをするだけでインテリセンスが効いてます。
pythonpathやextraPathsは特に設定してません。


追記
方法1

回答のコメントで色々確認したところ
インテリセンスが全く効いていないというわけではなく、pygame.displayなど一部のワードで効いていないということが分かりました。
これについては私の環境でも同じ状況で、以下のようにimport pygameでpygameを呼び出した後にpygameのサブモジュールを呼び出そうとすると補完が効かなくなります。(initquitなどのメソッドは補完が効きます)

import pygame

pygame.display

おそらく__init__.pyの中でサブモジュールをimportしているのが原因でしょう。
少し調べたところstack overflowに類似の質問があがっていました。
How to enable autocomplete (IntelliSense) for python package modules? | stack overflow
以下のようにimport pygame.displayとすれば補完が効くようになるみたいです。

import pygame.display

pygame.display
方法2

VSCodeの拡張機能Pylanceにはpygame用のpyiファイル(型の情報を持つファイル)を用意しているみたいですが、pygameのpyiファイルが邪魔して上手く機能していないみたいです。
import pygameのpygameの上で右クリックしてpygameの__init__.pyiファイルを表示。
ファイルのパスを確認したらFinderでpygameの__init__.pyiファイルを探してファイルを削除。
VSCodeをリロード。
これでPylanceのpyiファイルが使われるようになりコード補完が効くようになります。
こっちの方法なら使いたいサブモジュールを事前にimportする必要はないけど、pygameのバージョンを変えたら元に戻りそう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/02/23 21:50

    おそらく__init__.pyの中でサブモジュールをimportしているのが原因でしょう。とのことですがなぜサブモジュールをimportしていると補完が効かなくなるのでしょうか?

    キャンセル

  • 2021/02/23 23:44

    例えばpygameの__init__.pyまたは__init__.pyiファイル(pyiファイルは型の情報を定義するファイル)の中身を見ると「import pygame.display」という記述があります。(pygameの文字の上で右クリックしてGo to definitionを選択すれば確認できます)
    VSCodeの拡張機能はこの「import pygame.display」からdisplayがモジュールであるのか変数であるのか判断することができないみたいです。
    そのためサブモジュールdisplayは何かの型「Any」となり型補完が使えなくなる、と考えられます。

    キャンセル

  • 2021/02/24 15:31

    なるほどそうだったんですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る