2013年1月30日水曜日

Pythonでモジュールの自作


Pythonでモジュールの自作

自作のモジュールをつくる
つくったモジュールをパッケージ化したい
インストールしたpythonモジュールを削除したい

とりあえず適当なコード


foo.py サンプルコード
### comment                                                                                                                                                                                                                 

def say():
    print("foooo!!!")

if __name__ == '__main__':
    say()

setup.py サンプルコード
from distutils.core import setup

setup(  name = 'foo',
  version = '0.0.1',
  py_modules = ['foo'],
 )



パッケージ化する

$ python setup.py sdist 
$ tree
.
├── MANIFEST
├── __init__.py
├── dist
│   └── foo-0.0.1.tar.gz
├── foo.py
└── setup.py
distディレクトリの下にfoo-0.0.1.tar.gzができた

モジュールのインストール


アーカイブを解凍してそのディレクトリの中で
パッケージをインストール
$ cd dist
$ tar zxvf foo-0.0.1.tar.gz
$ cd foo-0.0.1
$ sudo python3.3 setup.py install

インストール先を指定しないので、
%PYTHON_HOME%\Libs\site-packages\
にインストールされることになる

パッケージの情報
$ cat dist/foo-0.0.1/PKG-INFO 
Metadata-Version: 1.0
Name: foo
Version: 0.0.1
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN

インストールしたモジュールをつかってみる

test_foo.py サンプルコード
import foo

foo.say()

test_foo.py を使う
$ python3.3 test_foo.py

インストール したモジュールの削除


インストールされたファイルの一覧を得る
sudo python setup.py install --record install_files.txt

$ cat
/usr/local/lib/python3.3/dist-packages/foo.py
/usr/local/lib/python3.3/dist-packages/__pycache__/foo.cpython-33.pyc
/usr/local/lib/python3.3/dist-packages/foo-0.0.1.egg-info

install_files.txtにリストアップされたファイルを全部消す
$ cat install_files.txt | sudo xargs rm -rvf


参考



2. setup スクリプトを書く — Python 3.3 documentation
http://docs.python.jp/3.3/distutils/setupscript.html

setuptools QuickStart - 清水川Web
http://www.freia.jp/taka/docs/pyhack4/setuptools/quickstart.html

programming/python/モジュールの配布 - PukiWiki
http://www.logos.ic.i.u-tokyo.ac.jp/~s1s5/pukiwiki/index.php?programming%2Fpython%2F%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%A4%CE%C7%DB%C9%DB

馬の脳: python setup.py installしたモジュールのアンインストール
http://horse-brain.blogspot.jp/2012/04/python-setuppy-install.html


0 コメント: