web-dev-qa-db-ja.com

pygameモジュールにinitメンバーがないと言うのはなぜですか?

以下は私が持っているコードです:

import pygame
pygame.init()

ファイルを実行しようとしても問題はないようですが、pylintは次のように述べているため、非常に混乱しています。

E1101:モジュール「pygame」には「init」メンバーがありません

この「エラー」の解決策を徹底的に探しました。関連するすべてのケースで、解決策は、「pygame」という名前の別のファイルまたはフォルダーを作成していないことを確認することでした。その場合、自分のファイルまたはフォルダーをインポートするだけだからです。ただし、「pygame」に近い名前のフォルダーまたはファイルも作成していないため、問題が何なのかわかりません。

前に述べたように、問題なくファイルを実行できるように見えますが、私はこれに慣れていないため、このようなエラーがあると、学習プロセスで混乱します。

Visual Studio Codeでコードを記述し、python 3.6を使用しています。pygame1.9.3を使用しており、pylintを更新しています。どんな助けでも歓迎します。

15
Ludde

VSコードがある場合は、.vscodeフォルダー> settings.jsonに移動するか、python.linting.mypyArgsを検索してください。ユーザー設定タブで中括弧の間に貼り付けます

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=lxml"  // The extension is "lxml" not "1xml"
]

Pyinitエラーは表示されなくなりました。

19
Parkofadown

すべての答えを要約します。これは、デフォルト以外のC拡張機能をロードしないためのセキュリティ対策です。

  1. 特定の拡張機能をホワイトリストに登録できます。

ユーザー設定を開き、{}の間に次を追加します。

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=extensionname" // comma separated
]
  1. すべての拡張機能の「安全でないロード」を許可できます。

ユーザー設定を開き、{}の間に次を追加します。

"python.linting.pylintArgs": [
    "--unsafe-load-any-extension=y"
]

リチャードとニアーに感謝します。

9
vt.

私は答えを見つけて、それは本当に私のために働いています。受け入れられた回答を参照して、extension-pkg-whitelist=lxmlに変更します

pylint 1.4は、すべてのC拡張でE1101(no-member)を報告します

3
Billy

これ answerには質問への回答が含まれます。簡単に説明すると:

Pylintはモジュールをインポートして、有効なメソッドと属性を効果的に識別します。 python stdlibの一部ではないc拡張機能をインポートすると、セキュリティ上のリスクが生じ、悪意のあるコードが導入される可能性があると判断されました。

そして、解決策として、とりわけ言及しています:

.pylintrc設定unsafe-load-any-extensions=yesを使用して安全性を無効にします。

pylint.rcの詳細については、 here を参照してください。最も簡単な方法は、プロジェクトディレクトリまたはホームディレクトリに.pylintrcファイルを作成することです。

1
Nearoo

ディレクトリに_pygame.py_という名前のpythonファイルが作成されているかどうかを確認します。その場合、_import pygame_行は実際のPygameモジュールの代わりに独自のファイルをインポートします。そのファイルにはinit()関数がないため、この特定のエラーメッセージが表示されています。

1
Sanketh B. K

PythonでVisual Studio Codeを使用し始めたとき、同じ問題がありました。別のpygame.pyを持っているか、適切にインストールしていないかは関係ありません。これは、Visual Studio Codeが文字通りコードを取得するという事実と関係があり、pygame.init()をインポートできないため、正しいモジュールではないと考えています。これを修正するには、settings.jsonを開きます(設定に入り、{}アイコン)と貼り付け"python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ]それに。