0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェアでのローカルディレクトリの構造の定式化のためのpythonモジュール:pkgstruct

Posted at

ソフトウェアのローカルディレクトリの構造の定式化: pkgstruct

以前の記事で、ローカルディレクトリの構造の定型化についての試みに触れた。要は、一つのディレクトリの下に、bin,lib, share, var,....と典型的なディレクトリ構造をつくって、データファイルを適切に分類保存していくのを助けるpythonコードを書いた話。

これをより簡単に使えるようにするため、多少名前を変えてpythonモジュール化してPyPIに登録した。

ファイル置き場

インストール方法

インストール例
% pip install pkgstruct

% 使い方

名前以外は以前の記事から変更なしです。

使用例
import pkgstruct
...
    Pkg_info = pkgstruct.PkgStruct(script_path=sys.argv[0])
    # pkg_info.dump(relpath=False, with_seperator=True)
...
    pkg_info.make_subdirs(pkg_sysconfdir, 0o755, True, kivy)
    os.environ[KIVY_HOME] = pkg_info.concat_path(pkg_sysconfdir, kivy)
....

実行スクリプト名からトップディレクトリを推測して、その下にディレクトリを作成したり、パス名を構築したりするメンバー関数があります。GNU Coding StandardやFilesystem Hierarchy Standard(FHS)に準じたサブディレクトリ構成を作成するのに役立ちます。たとえば、トップディレクトリが、~/tmp/py_working_toolで、ソフトウェアパッケージ名がpy_working_toolだった場合には、下記のようなキーワードで、サブディレクトリが作成できます。

  • bindir: ~/tmp/py_working_tool/bin
  • datadir: ~/tmp/py_working_tool/share
  • sysconfdir: ~/tmp/py_working_tool/etc
  • localstatedir: ~/tmp/py_working_tool/var
  • runstatedir: ~/tmp/py_working_tool/var/run
  • tmpdir: ~/tmp/py_working_tool/tmp

パッケージ名付きのディレクトリパスを得るキーワードは下記です。

  • pkg_datadir: ~/tmp/py_working_tool/share/py_working_tool
  • pkg_sysconfdir: ~/tmp/py_working_tool/etc/py_working_tool
  • pkg_cachedir: ~/tmp/py_working_tool/var/cache/py_working_tool
  • pkg_statedatadir: ~/tmp/py_working_tool/var/lib/py_working_tool
  • pkg_logdir: ~/tmp/py_working_tool/var/log/py_working_tool
  • pkg_spooldir: ~/tmp/py_working_tool/var/spool/py_working_tool

dump()といコマンドで全キーワードを確認できます。

‘pkg_name': py_working_tool
‘pkg_path': ~/tmp/py_working_tool
----------------------------------------------------------------------
‘base_script': ~/tmp/py_working_tool/lib/python/pkgstruct.py
----------------------------------------------------------------------
‘script_mnemonic': pkgstruct
‘script_path': ~/tmp/py_working_tool/lib/python/pkgstruct.py
‘script_location': ~/tmp/py_working_tool/lib/python
‘script_basename': pkgstruct.py
----------------------------------------------------------------------
‘prefix': ~/tmp/py_working_tool
----------------------------------------------------------------------
‘exec_user’: ********
----------------------------------------------------------------------
'exec_prefix':       '${prefix}'
'bindir':            '${prefix}'/bin
'datarootdir':       '${prefix}'/share
'datadir':           '${prefix}'/share
'sysconfdir':        '${prefix}'/etc
'sharedstatedir':    '${prefix}'/com
'localstatedir':     '${prefix}'/var
'include':           '${prefix}'/include
'libdir':            '${prefix}'/lib
'srcdir':            '${prefix}'/src
'infodir':           '${prefix}'/share/info
'runstatedir':       '${prefix}'/var/run
'localedir':         '${prefix}'/share/locale
'lispdir':           '${prefix}'/emacs/lisp
'docdir':            '${prefix}'/doc/py_working_tool
'htmldir':           '${prefix}'/doc/py_working_tool
'dvidir':            '${prefix}'/doc/py_working_tool
'pdfdir':            '${prefix}'/doc/py_working_tool
'psdir':             '${prefix}'/doc/py_working_tool
'mandir':            '${prefix}'/share/man
'man0dir':           '${prefix}'/share/man/man0
'man1dir':           '${prefix}'/share/man/man1
'man2dir':           '${prefix}'/share/man/man2
'man3dir':           '${prefix}'/share/man/man3
'man4dir':           '${prefix}'/share/man/man4
'man5dir':           '${prefix}'/share/man/man5
'man6dir':           '${prefix}'/share/man/man6
'man7dir':           '${prefix}'/share/man/man7
'man8dir':           '${prefix}'/share/man/man8
'man9dir':           '${prefix}'/share/man/man9
'manndir':           '${prefix}'/share/man/mann
'sbindir':           '${prefix}'/sbin
'bootdir':           '${prefix}'/boot
'devdir':            '${prefix}'/dev
'mediadir':          '${prefix}'/media
'mntdir':            '${prefix}'/mnt
'optdir':            '${prefix}'/opt
'tmpdir':            '${prefix}'/tmp
'xmldir':            '${prefix}'/etc/xml
'etcoptdir':         '${prefix}'/etc/opt
'cachedir':          '${prefix}'/var/cache
'statedatadir':      '${prefix}'/var/lib
'lockdir':           '${prefix}'/var/lock
'logdir':            '${prefix}'/var/log
'spooldir':          '${prefix}'/var/spool
'statetmpdir':       '${prefix}'/var/tmp
'user_home':         '${prefix}'/Users/********
'home':              '${prefix}'/Users/********
'homedir':           '${prefix}'/Users
----------------------------------------------------------------------
'pkg_datadir':       '${prefix}'/share/py_working_tool
'pkg_sysconfdir':    '${prefix}'/etc/py_working_tool
'pkg_runstatedir':   '${prefix}'/var/run/py_working_tool
'pkg_include':       '${prefix}'/include/py_working_tool
'pkg_libdir':        '${prefix}'/lib/py_working_tool
'pkg_srcdir':        '${prefix}'/src/py_working_tool
'pkg_tmpdir':        '${prefix}'/tmp/py_working_tool
'pkg_xmldir':        '${prefix}'/etc/xml/py_working_tool
'pkg_cachedir':      '${prefix}'/var/cache/py_working_tool
'pkg_statedatadir':  '${prefix}'/var/lib/py_working_tool
'pkg_lockdir':       '${prefix}'/var/lock/py_working_tool
'pkg_logdir':        '${prefix}'/var/log/py_working_tool
'pkg_spooldir':      '${prefix}'/var/spool/py_working_tool
'pkg_statetmpdir':   '${prefix}'/var/tmp/py_working_tool
----------------------------------------------------------------------
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?