1. ホーム
  2. スクリプト・コラム
  3. パイソン

自分で書いたPythonインポートpyファイル

2022-01-26 17:52:39

I. 実現したい効果

自分でコーディングしたモジュールを一元管理するためのフォルダを新規に作成する

サードパーティライブラリをインポートするのと同じように、自分でコーディングしたモジュールを他のpyファイルの中でインポートすることができます。

II. 実装方法

ステップ1:番号付けされたモジュール*.pyをフォルダに入れる、私のコンピュータではそうなっている。F:\OneDrivePythonPrj_myFunction

ステップ2:新しいユーザー/システム環境変数を作成します。

変数名:PYTHONPATH

変数名:フォルダーパス

そうすれば、目的の効果を得ることができます。以下の3つのインポート方法は、すべて利用可能です。

この根拠は、Pythonインタプリタがインポートするモジュールを探すために、次の3つの場所に移動するためです。

  1. 現在のファイルがあるディレクトリ
  2. 環境変数PYTHONPATHで指定されたディレクトリ
  3. Pythonのデフォルトインストールディレクトリ

Pythonのsys.path変数には、以下のようにインタプリタ・インポート可能なモジュールの位置が記録されています。

そこで、以下のコードで sys.path 変数を操作することで、インタープリタにモジュールのありかを伝えることができます。

sys.path はリストですが、ここでは append でパスを追加し、このパス a 以下のモジュールが正常にインポートされるようにしています。この方法はコードが2行余分にあり、不便なので、一時的に使用するのに適しています。

III. 高度な使用法

セルフコードモジュールが増えてきたり、セルフコードモジュールに説明書きを追加したい場合も、管理やメンテナンスがしやすいように、各セルフコードモジュールを別々のフォルダに格納したいものです。こんな感じで。

そして、自分でコーディングしたモジュールをフォルダに格納します(例:myPackage1)。

この時点で、次のように書いてモジュールをインポートしたい。

これは第1階層のサブフォルダの書き方で、それ以上の階層のフォルダはずっと(.)をクリックすると下に降りていくことができます。もちろん、通常使うのは第1階層のサブフォルダーだけで、第2階層はほとんど使いません。

IV. を使う イニット _.py は、フォルダーがインポートされたときに実行されるアクションを制御します。

もし、フォルダ内のすべてのモジュールのインポートを、ドットでひとつひとつクリックすることなく、一度に制御したい場合は、 を使用する必要があります。 イニット _.py ファイルを参照してください。

このファイルは、下図のようにモジュールと同じディレクトリにある必要があり、Pythonは、。 イニット _.py ファイルがあるフォルダをパッケージと呼びます。

myPackage1 をインポートするたびに、_. イニット .py が自動的に一度だけ実行されるので、パッケージ初期化ファイルとも呼ばれます。この機能を利用して、このファイルにいくつかのコードを書き、myPackage1 フォルダをインポートする際の動作を制御することができます。この初期化ファイルをこのように書きます。

import sys# Add the directory where the __init__.py file is located to the Python search directory, otherwise it will prompt that myModule1 cannot be found sys.path.append(__file__[:-12]) import myModule1

次に、他の py ファイルで myPackage1 をインポートします。 イニット _.py ファイルが自動的に実行されるので、myModule1 ファイルが自動的にインポートされます。それを確認します。

もちろん、パッケージ初期化ファイルにimportと書いても、import myPackage1.myModuleのようにモジュールをインポートすることは可能です。パッケージ初期化ファイルは、本来のimportメソッドには何の影響も及ぼさないのです。

また、次のように、パッケージ内のモジュールで定義された関数やプロパティを1つずつインポートすることもできます_。 イニット _.py ファイルをご覧ください。

import sys
# Add the __init__.py file to the Python search directory, otherwise myModule1 will not be found
sys.path.append(__file__[:-12])

import myModule1


そして、他の py ファイルがインポートされたら、次のように記述します。

このように、myModule1で定義された関数を直接利用することができます。

まとめると、importモジュールの書き方は、__と同じです。 イニット _.py の書き方は一貫している必要があります。つまり、両方がパッケージ名をインポートするか、両方がパッケージ名から * をインポートするかで、望ましい効果を得ることができます。

私はPythonを十分に理解していないので、私が理解したいくつかのパターンを共有することはできません。

概要

Pythonで書かれたpyファイルをインポートする方法については、この記事がすべてです。Pythonで書かれたpyファイルのインポートについては、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事を参照してください。