コードをファイル分割する場合、メインファイルでサブファイルをインポートする必要があります。
インポート可能なファイルは、
の2種類があります。
サーチパスには、
などがあります。以下では、メインファイルが存在するディレクトリにサブファイルが存在している場合の例を示しています。
ディレクトリ構成
$ tree .
.
|-- main.py
`-- sub.py
main.py
#!/usr/bin/python
import sub
print sub.x
sub.setX(256)
print sub.x
sub.x = 512
print sub.x
sub.py
x = 128
def setX(var):
global x
x = var
実行例
$ python main.py
128
256
512
実行後のディレクトリ構成 (バイトコンパイルされたsub.pycが生成されています)
$ tree .
.
|-- main.py
|-- sub.py
`-- sub.pyc
C++などにおける、using namespaceに相当するインポート方法もあります。
ディレクトリ構成
$ tree .
.
|-- main.py
`-- sub.py
main.py
#!/usr/bin/python
from sub import setX,getX
setX(1024)
print getX()
sub.py
x = 128
def setX(var):
global x
x = var
def getX():
global x
return x
実行例
$ python main.py
1024
サブディレクトリ内のファイルをインポート (パッケージインポート) するためには、空の__init__.pyファイルを作成し、
ディレクトリのパス情報を含めたimportあるいはfrom import宣言を記述します。
ディレクトリ構成
$ tree .
.
|-- main.py
`-- my
|-- __init__.py
`-- sub.py
main.py
#!/usr/bin/python
import my.sub
print my.sub.x
my.sub.setX(256)
print my.sub.x
my.sub.x = 512
print my.sub.x
sub.py
x = 128
def setX(var):
global x
x = var
実行例
$ python main.py
128
256
512
実行後のディレクトリ構成
$ tree .
.
|-- main.py
`-- my
|-- __init__.py
|-- __init__.pyc
|-- sub.py
`-- sub.pyc
__init__.py
で import する書き方__init__.py
に import 文が記載してある場合は、利用する際にディレクトリを指すように import することができます。
my/__init__.py
# -*- coding: utf-8 -*-
import my.sub
main.py
#!/usr/bin/python
import my # このように書ける
#import my.sub
print my.sub.x
my.sub.setX(256)
print my.sub.x
my.sub.x = 512
print my.sub.x