5

私は Python を学んでおり、2.7.3 で作業しており、importステートメントを理解しようとしています。

  1. ドキュメントによると、モジュールをインポートしようとすると、インタープリターは最初に組み込みモジュールの 1 つを検索します。

    組み込みモジュールとはどういう意味ですか?

  2. 次に、ドキュメントには、インタープリターが sys.path によってリストされたディレクトリを検索し、sys.path がこれらのソースから初期化されることが記載されています。

    • 入力スクリプトを含むディレクトリ (または現在のディレクトリ)。
    • PYTHONPATH(シェル変数と同じ構文のディレクトリ名のリストPATH)。
    • インストールに依存するデフォルト。

    これは、コマンドライン モードで python を使用して私のコンピューターから sys.path コマンドを実行した場合の出力例です: (サイズが大きくならないようにいくつか削除しました)

    ['', '/usr/lib/python2.7', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
    

    ここで、'' パスが 'スクリプト' を含むディレクトリを参照していると想定しているため、残りのパスはPYTHONPATH環境変数から取得されると考えました。ただし、ターミナルに移動して と入力するとenvPYTHONPATH環境変数として存在しません。import osその後も試しましos.environたが、同じ出力が得られます。

    本当に PYTHONPATH 環境変数がないのでしょうか? PYTHONPATH 環境変数を明確に定義したことはないと思いますが、新しいパッケージをインストールすると、その環境変数が自動的に変更されると思いました。PYTHONPATH がない場合、sys.path はどのように設定されますか? 新しいパッケージをダウンロードする場合、この PYTHONPATH 変数がない場合、Python はどのようにしてそれらを探す場所を知るのでしょうか?

  3. 環境変数はどのように機能しますか? 私が理解していることから、環境変数はそれらが設定されているプロセスに固有のものですが、複数のターミナル ウィンドウを開いて を実行するenvと、すべて同じ変数が多数表示されますPATH。たとえば/etc/environment、私の変数を含む永続的な環境変数のファイルの場所があることを知っていPATHます。永続的な環境変数がどこに保存されているかを知ることはできますか? 新しい永続的な環境変数を保存するための推奨される場所は? 環境変数は、たとえば Python インタープリターで実際にどのように機能しますか? Python インタープリターは を探しますがPYTHONPATH、核心レベルではどのように機能するのでしょうか?

4

3 に答える 3

7

一度にたくさんの質問があります!:)

さて、私はそれらのいくつかだけに答えようとします。

1)組み込みモジュールは、Pythonリリースに付属するモジュールです。たとえば、sysモジュールとosモジュールは組み込みモジュールです。本当にそれだけです。

2)PYTHONPATH変数は、デフォルトではシステムに存在しません。Pythonインタープリターを起動すると、説明した方法で、モジュールを検索するパスの配列がいっぱいになります。これはsys.pathの結果です。ただし、sys.pathは環境変数PYTHONPATHではありません。システムでPYTHONPATHを設定すると、それに含まれるすべてのパスが、Pythonのインタープリターがモジュールの検索に使用する配列に含まれます。

私はそのような質問に答えるのにふさわしい人物ではないと感じているので、環境変数への答えは他の人に任せます。私の感じでは、それはシステムごとに変わるかもしれないということです。ともかく...

それが役に立てば幸い。

于 2012-08-06T12:34:17.623 に答える
0

PYTHONPATHシステムで定義されていません。それは、「インストールに依存するデフォルト」sys.path以外に 表示されるのはすべてであることを意味します。''

環境変数は、プロセスではなく、環境を特徴付けます。ただし、Linuxenvコマンドなどを使用してプロセスを開始するときに、それらを微調整できます。これは基本的に、プロセスが別の環境で実行されることを意味します。質問の「どのように機能するか」の部分には、プラットフォームに依存する回答が含まれる場合があります。ただし、ファイルを意味する場合、「永続的な環境変数がどこに保存されているかを知る」ことはできないと思います。環境変数は、ある時点 (通常は起動時) に実行される任意のファイル、またはコマンド ラインで設定できます。

于 2012-08-06T12:49:27.223 に答える