Skip to content

haloyukka/halolib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

halolib

ライブラリを作る

基本ディレクトリ構成

halolib
├── setup.py
└── halolib
    ├── __init__.py
    └── halolib.py

インストール方法

cd [setup.py]と同階層
pip install .

アンインストール方法

pip uninstall halolib

開発(editable)モードでのインストール

pip install -e .

editableモードでは、ライブラリ更新時にpip installし直さなくても、その内容が即座に反映される。

自作ライブラリをGitHubからインストール

pip install git+<リポジトリのURL>



__init__.pyの書き方

__init__.pyとは2つの意味がある
1つはPythonディレクトリを表す役割を担う
1つはモジュールをimportするときの初期化処理を行う

import ~とfrom ~ import ~の違い

import

import モジュール名 [as 別名]

あるモジュールの機能を追加する
機能を利用するときは
(モジュール名 もしくは 別名).(機能名)と入力する

#randomというパッケージをimport
import random

#random内のrandintという関数を使う
A=random.randint(0,100)
print(A)
A=[1,2,3,4,5]

#matplotlib内にあるpyplot.pyをimport
import matplotlib.pyplot as plt

#pyplot.pyのplotという関数を使う
plt.plot(A)
plt.show()

from import

from モジュール名 import 機能名
あるモジュールのある機能を追加する。
ある機能のみを追加したいとき、モジュール名を書かずに使うことが出来る。

A=[1,2,3,4,5]

#matplotlibパッケージ内のpyplot.py内にあるplot関数とshow関数の2つのみをimport
from matplotlib.pyplot import plot,show

plot(A)
show()

この2つには大差がないが__init__.pyでは意味が変わる。

__init__.pyの書き方

パッケージの例

test_imt
├── __init__.py
├── main.py
└── sub.py

main.pyの中身

import test_imt.sub as ts
def chkprint2():
 ts.chkprint()
 print("You use main.py!")

sub.pyの中身

def chkprint():
 print("You use sub.py!")

<注意>
パッケージにするときの同じディレクトリ内のモジュールのimportはパッケージ名から書いた方が良い
import (パッケージ名).(モジュール名)

__init__.pyの中身が空のとき

__init__.pyは何も書かなくてもよい。
ただし、importして関数を使いたい時、多少面倒になる。
例えば、main.pychkprint2関数を使い時、次のように入力する。

test.py

import test_imt as ti
ti.main.chkprint2()

#結果
#You use sub.py!
#You use main.py!

"main"とモジュール名を間に入れる必要がでてくる。

モジュール名を書かないと次のようになる。

import test_imt as ti
ti.chkprint2()

#結果
#test.py, line 2, in <module>
#    ti.chkprint2()
#AttributeError: module 'test_imt' has no attribute 'chkprint2'

test_imtにはchkprint2という関数はない。

__init__.pyでモジュール名をカット

main.pychkprint2関数をモジュール名をカットして使いたいときには次のようにする。

```init.py`の中身

from test_imt.main import *

import時 test.py

import test_imt as ti
ti.chkprint2()

#結果
#You use sub.py!
#You use main.py!

ここではfrom ~ imoprt *を利用する。
import ~を利用するとモジュール名をカットして関数を使うと先程のエラーが発生する。

このような性質があるので

  • モジュール名をカットして使いたい時はfrom ~ import *を使って書く
  • 単に準備のために作ったモジュールで、公開するとき必要性が無いものはimport ~ を使って書く つ使い分けができる。

例えば、
main.pyの中身を主に使用するならfrom test_imt.main import *と書く。
sub.pyをプログラム内に取り込むだけで主要な関数が無いならimport test_imt.subと書く。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages