1

まず、私は新しいユーザーであり、大学でPythonを学び始めたばかりなので、この質問が他のトピックで回答された場合はお詫びしますが、検索しても見つからないようです。

先生からファイルを受け取りましたwork.pycが、コマンドを使用してWing IDEにインポートする必要があると言われましfrom work import *た。問題は、ファイルをどこに置いてインポートするかわからないということです。

それはただ言うImportError: No module named work

ありがとうございました

4

3 に答える 3

3

これにはいくつかのオプションがあります。最も簡単な方法は、インポートする py ファイルと同じフォルダーに配置することです。

あなたもこれを見たいと思うかもしれません

于 2012-10-29T18:11:50.647 に答える
2

main.pyフォルダー内で呼び出されるスクリプトで作業している場合project、1 つのオプションは、フォルダーに配置することです。project/work.pyc

これにより、モジュールはコードと同じ作業ディレクトリにあるため、インポート可能になります。

Python がインポート ステートメントを解決する方法は、次のように機能します (簡略化)。

使用している Python インタープリター (/usr/bin/python2.6たとえば、システム上に複数存在する可能性があります) には、インポート可能なコードを探す検索パスのリストがあります。このリストは入ってsys.pathおり、インタプリタを起動して次のように出力することで見ることができます:

>>> import sys
>>> from pprint import pprint
>>> pprint(sys.path)

sys.path通常、標準ライブラリからのモジュールへのパス、追加のインストール済みパッケージ (通常はサイト パッケージ内)、および場合によっては他のサードパーティ モジュールへのパスが含まれます。

のようなことをするとimport foo、Python は最初にfoo.py、スクリプトが存在するディレクトリに呼び出されたモジュールがあるかどうかを調べます。そうでない場合は、検索sys.pathしてそこからインポートしようとします。

私が言ったように、この説明は少し単純化されています。詳細は、モジュールの検索パスに関するセクションで説明されています。

注 1:*.pyc渡された のはコンパイル済みの Python バイトコードです。つまり、その内容はバイナリであり、*.py通常扱うソース コードとは対照的に、Python 仮想マシンによって実行される命令が含まれています。

注 2: 先生からのアドバイスfrom work import *はかなり悪いアドバイスです。対話型インタープリターでテスト目的でこれを行うことは問題ないかもしれませんが、実際のコードでは決してそれを行うべきではありません。代わりに、次のようなことをする必要がありますfrom work import chop, hack

主な理由:

  • 名前空間の汚染。必要のないものをインポートする可能性がありますが、それでもグローバル名前空間を汚染します.
  • 可読性。他の誰かのコードを読んでどこfooから来たのだろうと思ったら、上にスクロールしてインポートを見てください。どこからインポートされたのか正確にわかります。その人が を使用した場合import *、それはできません。
于 2012-10-29T18:13:08.467 に答える
2

Python インタープリター (Python コードを直接入力して実行できるもの) を使用している場合は、次のようにする必要があります。

sys.path.append('newpath')

from work import *

ここで、newpathは、work.pyc ファイルを含むファイル システム上のパスです。

于 2012-10-29T18:15:13.130 に答える