前書き

Python *モジュール*は、Pythonコードで構成される `+ .py +`ファイルです。 Pythonファイルはモジュールとして参照できます。

一部のモジュールはhttps://docs.python.org/3/library/[Python Standard Library]から入手できるため、Pythonのインストール時にインストールされます。 その他はhttps://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3#checking-for-and-installing-modules[installed] with Python’s package manager `+ pip + `。 さらに、モジュールはPythonの `+ .py +`ファイルで構成されるため、独自のPythonモジュールを作成できます。

このチュートリアルでは、他のプログラミングファイル内で使用するPythonモジュールを作成する方法を説明します。

モジュールの作成とインポート

モジュールの作成は、他のPythonファイルの作成と同じです。 モジュールには、他のPythonプログラムで利用できる関数、クラス、変数の定義を含めることができます。

Python 3 https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-ubuntu-16-04 [ローカルプログラミング環境]またはhttps://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-16-04 -server [サーバーベースのプログラミング環境]、ファイル `+ hello.py +`を作成することから始めましょう。このファイルは後で別のファイルにインポートします。

まず、https://www.digitalocean.com/community/tutorials/how-to-define-functions-in-python-3 [関数を作成]で、 `+ Hello、World!+`を出力します。

hello.py

# Define a function
def world():
   print("Hello, World!")

コマンドラインで `+ python hello.py +`を指定してプログラムを実行すると、プログラムに何もするように指示していないため、何も起こりません。

https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3 [モジュールをインポートする]作成したばかりの関数を呼び出します。 このファイルは同じディレクトリに存在する必要があります。これにより、Pythonは組み込みモジュールではないため、モジュールの場所を認識できます。

main_program.py

# Import hello module
import hello


# Call function
hello.world()

私たちはhttps://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3#importing-modules [モジュールのインポート]であるため、モジュールを参照して関数を呼び出す必要がありますドット表記の名前。

代わりに、モジュールを「+ from hello import world 」としてインポートし、関数を「 world()」として直接呼び出すことができます。 この方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3#using-from–import [「 from + + import + `モジュールをインポートする場合]。

これで、コマンドラインでプログラムを実行できます。

python main_program.py

すると、次の出力が表示されます。

OutputHello, World!

モジュールでhttps://www.digitalocean.com/community/tutorials/how-to-use-variables-in-python-3[variables]を使用する方法を確認するには、変数+ helloに変数定義を追加しましょう.py + `ファイル:

hello.py

# Define a function
def world():
   print("Hello, World!")

# Define a variable
shark = "Sammy"

次に、 `+ main_program.py `ファイル内の ` print()+`関数で変数を呼び出します。

main_program.py

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

プログラムを再度実行すると、次の出力が表示されます。

OutputHello, World!
Sammy

最後に、 `+ hello.py `でhttps://www.digitalocean.com/community/tutorials/how-to-construct-classes-and-define-objects-in-python-3 [クラスを定義]ファイル。 クラス「 Octopus」を作成し、「+ name」および「+ color」属性と、呼び出されたときに属性を出力する関数を作成します。

hello.py

# Define a function
def world():
   print("Hello, World!")

# Define a variable
shark = "Sammy"


# Define a class
class Octopus:
   def __init__(self, name, color):
       self.color = color
       self.name = name

   def tell_me_about_the_octopus(self):
       print("This octopus is " + self.color + ".")
       print(self.name + " is the octopus's name.")

クラスを `+ main_program.py +`ファイルの最後に追加します:

main_program.py

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

# Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()

`+ hello.Octopus()`でOctopusクラスを呼び出すと、 ` main_program.py `ファイルの名前空間内のクラスの関数と属性にアクセスできます。 これにより、 ` hello `を呼び出さずに、最後の行に ` jesse.tell_me_about_the_octopus()`を記述できます。 たとえば、 ` hello `モジュールの名前を参照せずに、 ` jesse.color +`などのクラスの属性の1つを呼び出すこともできます。

プログラムを実行すると、次の出力が表示されます。

OutputHello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.

モジュールは多くの場合定義ですが、コードを実装することもできることに注意してください。 これがどのように機能するかを見るために、 `+ world()`関数を実装するように ` hello.py +`ファイルを書き換えましょう:

hello.py

# Define a function
def world():
   print("Hello, World!")

# Call function within module
world()

ファイル内の他の定義も削除しました。

次に、 `+ main_program.py +`ファイルで、importステートメントを除くすべての行を削除します。

main_program.py

# Import hello module
import hello

`+ main_program.py +`を実行すると、次の出力が表示されます。

OutputHello, World!

これは、 `+ hello `モジュールが ` world()`関数を実装し、それが ` main_program.py `に渡され、 ` main_program.py +`の実行時に実行されるためです。

モジュールは、他のPythonプログラムファイルで利用できる定義またはコードで構成されるPythonプログラムファイルです。

別のディレクトリからモジュールにアクセスする

モジュールは複数のプログラミングプロジェクトに役立つ場合があります。その場合、特定のプロジェクトに関連付けられている特定のディレクトリにモジュールを保持することはあまり意味がありません。

メインプログラムがあるディレクトリとは別の場所からPythonモジュールを使用する場合は、いくつかのオプションがあります。

パスを追加する

1つのオプションは、そのモジュールを使用するプログラミングファイルを介してモジュールのパスを呼び出すことです。 これは、モジュールをシステム全体で使用可能にしないため、開発プロセス中に実行できる一時的なソリューションと見なす必要があります。

モジュールのパスを別のプログラミングファイルに追加するには、メインプログラムファイルで使用する他のモジュールと一緒に `+ sys +`モジュールをインポートすることから始めます。

`+ sys +`モジュールはPython標準ライブラリの一部であり、実装するモジュールのパスを設定するためにプログラムで使用できるシステム固有のパラメーターと関数を提供します。

たとえば、 `+ hello.py `ファイルを移動し、 ` main_program.py `ファイルが別のディレクトリにある間に、パスが ` / usr // +`にあるとします。

`+ main_program.py `ファイルでは、 ` sys `モジュールをインポートし、Pythonがファイルをチェックするパスに ` / usr // `を追加することで、 ` hello +`モジュールをインポートできます。

main_program.py

import sys
sys.path.append('/usr/sammy/')

import hello
...

`+ hello.py `ファイルのパスを正しく設定していれば、エラーなしで ` main_program.py `ファイルを実行し、 ` hello.py +`の場合に上記と同じ出力を受け取ることができます。同じディレクトリにありました。

モジュールをPythonパスに追加する

2番目のオプションは、Pythonがモジュールとパッケージをチェックするパスにモジュールを追加することです。 これは、モジュールを環境全体またはシステム全体で使用できるようにする、より恒久的なソリューションであり、この方法をよりポータブルにします。

Pythonがチェックするパスを確認するには、プログラミング環境からPythonインタープリターを実行します。

python

次に、 `+ sys +`モジュールをインポートします:

import sys

次に、Pythonにシステムパスを出力させます。

print(sys.path)

ここでは、少なくとも1つのシステムパスを含む出力を受け取ります。 プログラミング環境にいる場合は、いくつか受け取ることがあります。 現在使用している環境にあるものを探す必要がありますが、メインシステムのPythonパスにモジュールを追加することもできます。 探しているものは次のようになります。

Output'/usr///lib/python3.5/site-packages'

これで、 `+ hello.py `ファイルをそのディレクトリに移動できます。 それが完了したら、通常通り ` hello +`モジュールをインポートできます:

main_program.py

import hello
...

プログラムを実行すると、エラーなしで完了します。

モジュールのパスを変更すると、現在のディレクトリに関係なく、モジュールに確実にアクセスできます。 これは、特定のモジュールを参照するプロジェクトが複数ある場合に特に便利です。

結論

Pythonモジュールの作成は、他のPython `+ .py +`ファイルの作成と同じです。 このチュートリアルでは、モジュール内で定義を記述する方法、別のPythonプログラミングファイル内でそれらの定義を使用する方法、およびモジュールにアクセスするためにモジュールを保持する場所のオプションについて説明しました。

モジュールのインストールとインポートの詳細については、https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3 [Python 3でモジュールをインポートする方法]を参照してください。