2010年07月10日

【make test】Python2.7正式リリースに付Install

 Python2.x系の最終版となる予定のPython2.7が正式リリースされている。そこで早速、当方のLinux環境にInstallして試た。
 Python2.7は、このBlogでもかつて触れたので、詳細は割愛するが、Python2.x系で開発されてきたモジュールが、ソース変更なし(または僅かな修正程度)で動く可能性のある最後のもので、Python3移行がされる迄の間の最後Python2.x系の環境として今後セキュリティメンテされることになる。使わない内に書くとデマ情報となりそうなので現時点であまり書けないが、print文がPython3.x系同様にprint()関数となり、見た目はPytohn3.x系にかなり近いコーディングが可能になる点は移行を前提にする立場には良いのかもしれないが、単純に既存のPythonの資産を利用するだけなら、現時点で無理してPython2.7をInstallし利用する必要はないと思う。当方の場合もあくまで、既存コード利用はPython2.6.5で行ないPython2.7は、自作ツール類の移植テスト用での導入である。

 このBlogでは度々Install経過を載せているのでLinux環境でのPythonのインストールは理解していらっしゃる方が多いと思うが、簡単には次の手順のみで可能である。
1. ソースファイルのダウンロード
2. そのファイルの解凍
3. ソースのディレクトリに移り
4. ./configure 実行
5. make 実行
6. make install 実行

 実際のコンソール上での作業は次の様にものだ。ただ当方の場合、make install実行前に、「mv /usr/local/bin/python /usr/local/bin/python2.6.5」等と実行しpython2.6系が既定実行されていたファイルを備忘の為、renameしている。どうせ中身は「/usr/local/bin/python2.6」と同じなので不要と言えば不要だが、どのサブバージョンで既定を移行したかを後で知る上では有効と思うからである。この既定で実行されるPythonはInstallの度に変わるので、今後の予定で言うと来月Python2.6.6がリリースされる、それにUpdateした時点でPython2.6.6が既定になってしまう。無論、Linuxでのスクリプトソースコードでは一行目に実行環境を指定しているので通常は問題が発生することはない。



[root@l22dm ~]# cd DownloadFiles/
[root@l22dm DownloadFiles]# mkdir Python
[root@l22dm DownloadFiles]# cd Python
[root@l22dm Python]# wget http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2

[root@l22dm Python]# tar xvjf Python-2.7.tar.bz2

[root@l22dm Python-2.7]# ./configure

[root@l22dm Python-2.7]# make

[root@l22dm Python-2.7]# make install


 ただ今回は、そのInstallに当り、当方のLinux環境でのCGIのpost method利用時の課題やdbmで利用可能なDBタイプの問題もあり、今回のInstallでは「make test」をこまめに見て試ることにした。
続きを読む
posted by Mire at 12:27 | Comment(0) | TrackBack(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2010年03月28日

【PythonのHELP】Pythonのhelp()関数をプロンプトから使うhlpy

 最近、このブログのテーマ外の課題で時間を取られ気がつくと月初の投稿以来、24日もここに書いていない。ネタがないわけでもないのだか、生計を立てる為の生業の為なので、それを優先させて頂いている。こんなブログでも最近はコンスタントにアクセスがある様で、携帯からのアクセスも増えてきた様で、期待はされていないとは思うけど、取敢えず、首記の小ネタでお茶を濁して置く。

 「【PythonのHELP】Pythonにはhelp()関数有ったんだぁ」で紹介した、Pythonモジュールの__doc__を表示してくれる関数は便利なのだが、いくつか使い辛いことがある。

 Pythonのhelp()関数の実行は基本的にPythonの対話モードでの手入力利用を想定したものなので、基本的な使い方は次の通りとなる。

       


[root@l22dm ~]# /usr/local/bin/python2.6
Python 2.6.4 (r264:75706, Nov 5 2009, 23:51:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mire.htm
>>> help(mire.htm)
Help on module mire.htm in mire:

NAME
mire.htm

FILE
/usr/local/lib/python2.6/site-packages/mire/htm.py

DESCRIPTION
######################################################################
#00. header(Type) : cgi Content出力。Type:'html'(既定),'xml'
#01. html_header(charset, : html文書の開始タグ一式を標準出力します
# ,title,base :
# ,refresh :
# ,cache,robot:
# ,css,style :
# ,js,author :
# ,generator :
# ,copyright :
# ,keywords :
# ,description:
# ,body) : bodyつまり文書全体の属性定義をリスト付与
#02. html_footer() : html文書の終了タグ一式を標準出力
#03. url2str_list(url) : urlの示す文書を文字列リストで返します
#04. url2str(url,trim=0) : urlを文字列で返します。前後空白除去trim=1
#05. get_charset(s) : str文字列からmeta定義のcharsetを返します
#06. str2unicode(s,charset) : 文字列のunicode化を試みその文字列を返します
#07. cgi_params() : CGI引数を辞書化し返します
#08. param_lst(omit_params : 引数とその値をGET形式'引数名=値'文字列listを
# ,params_dic): 返す「url+'?'+'&'.join()」で活用
#09. tag_encode(lines) : タグ文字のままHTML表示可能な文字列listに変換
#10. display_err(locals() : HTMLヘッダを伴ない、例外発生時の変数状況を
# ,title): locals()で、titleに仕掛けた場所を入れ利用。
#11. pipe(url,Type='xml') : 指定URIを読みそのまま返します。ドメイン外部の
# XMLコンテンツをjavascript活用する中継プログラム

FUNCTIONS
cgi_params()
## CGI引数の辞書化 ##
cgi.FieldStorage()で得られるcgi引数を辞書に収め返す
辞書構造とすることで修正が可能になる他、
必要な既存の引数を引継ぎインタラクティブにページを変化
させるときに便利。
【使い方】
下記の様に引数名を keys()で取得、順不同の為、必要より、
sort()の上、引数名を1つずつ取出し活用すると良い
param_dic = cgi_params()
keys = param_dic.keys()
for k in keys:
value = param_dic[k]
print k,value

:

up downカーソルキーで行送り
またはCtrl+F/Bキーで頁送りして
モジュールの仕様を調べ、
Ctrl+Zで終了

[root@l22dm ~]#


まあ、TelnetまたはSSHの窓を別に開いて叩けば大した手順ではないのでこれでも構わないが、複数回手打ちしていると、モジュール名を2回手打ちしないとならないことと毎回利用するpythonを指定して起動させるのが嫌になってしまう。

 で、Pythonの動的importと引数渡しの機能 を活用し「hlpy <モジュール名>」で実行出来る様にして試た。使って試ると結構軽快に使えるので、例えば「hlpy os.path」等として関数名を確認したりするまに使っている。慣れて来ると、日本語でなくても良ければ標準モジュールの利用もこれで充分だ。

 ソースコードとその導入方法は以下の通り。続きを読む
posted by Mire at 04:09 | Comment(0) | TrackBack(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2009年11月20日

【CentOS5.4】各Pythonにeasy_installをInstall

 Pythonモジュールのインストールは、ソースからの導入パッケージ記録を残すことと、あまり見ることはないもののソースを眺めることが出来ることから、日頃ソースからのインストールで済ませているのだが、永年使っているZope2の新版(2.12.1)をインストールしようとしたら、今後ソースパッケージ提供はしないとの方針とのこと。やむなくeasy_installを導入することにした。取敢えず必要なものは、Python2.6のみだが、CentOSのシステム用に当初から/usr/lib/に入っているPython2.4.3やPython3.1にも導入して試たいと思い調べて試た。

 基本的に当初のインストールなので、ソースの展開先ディレクトリで、それを導入したいバージョンのPythonを指定して例えば「/usr/local/python2.6 setup.py install」等として導入する。ソースは、現時点ではPyPI内にある「setuptools 0.6c11」を利用。
     Python2.6へのeasy_installの導入作業


[root@localhost Desktop]# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
--2009-11-20 04:51:57-- http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
pypi.python.org ?DNS??????????... 82.94.164.163, 2001:888:2000:d::a3
pypi.python.org|82.94.164.163|:80 ????????... ???????
HTTP ????????????????????????... 200 OK
??: 256862 (251K) [application/x-gzip]
`setuptools-0.6c11.tar.gz' ????

100%[=================================================>] 256,862 64.7K/s ?? 3.9s

2009-11-20 04:52:02 (64.7 KB/s) - `setuptools-0.6c11.tar.gz' ????? [256862/256862]

[root@localhost Desktop]# tar xvzf setuptools-0.6c11.tar.gz
setuptools-0.6c11/
setuptools-0.6c11/version.dat
setuptools-0.6c11/README.txt
setuptools-0.6c11/wikiup.cfg
setuptools-0.6c11/pkg_resources.txt
setuptools-0.6c11/EasyInstall.txt
setuptools-0.6c11/api_tests.txt
setuptools-0.6c11/setuptools.txt
setuptools-0.6c11/ez_setup.py
setuptools-0.6c11/tests/
setuptools-0.6c11/tests/shlib_test/
setuptools-0.6c11/tests/shlib_test/hellolib.c
setuptools-0.6c11/tests/shlib_test/setup.py
setuptools-0.6c11/tests/shlib_test/hello.c
setuptools-0.6c11/tests/shlib_test/hello.pyx
setuptools-0.6c11/tests/shlib_test/test_hello.py
setuptools-0.6c11/setuptools.egg-info/
setuptools-0.6c11/setuptools.egg-info/not-zip-safe
setuptools-0.6c11/setuptools.egg-info/top_level.txt
setuptools-0.6c11/setuptools.egg-info/SOURCES.txt
setuptools-0.6c11/setuptools.egg-info/PKG-INFO
setuptools-0.6c11/setuptools.egg-info/entry_points.txt
setuptools-0.6c11/setuptools.egg-info/dependency_links.txt
setuptools-0.6c11/virtual-python.py
setuptools-0.6c11/pkg_resources.py
setuptools-0.6c11/site.py
setuptools-0.6c11/release.sh
setuptools-0.6c11/setup.py
setuptools-0.6c11/launcher.c
setuptools-0.6c11/PKG-INFO
setuptools-0.6c11/easy_install.py
setuptools-0.6c11/setup.cfg
setuptools-0.6c11/version
setuptools-0.6c11/setuptools/
setuptools-0.6c11/setuptools/extension.py
setuptools-0.6c11/setuptools/sandbox.py
setuptools-0.6c11/setuptools/depends.py
setuptools-0.6c11/setuptools/tests/
setuptools-0.6c11/setuptools/tests/win_script_wrapper.txt
setuptools-0.6c11/setuptools/tests/test_resources.py
setuptools-0.6c11/setuptools/tests/__init__.py
setuptools-0.6c11/setuptools/tests/test_packageindex.py
setuptools-0.6c11/setuptools/tests/doctest.py
setuptools-0.6c11/setuptools/__init__.py
setuptools-0.6c11/setuptools/archive_util.py
setuptools-0.6c11/setuptools/dist.py
setuptools-0.6c11/setuptools/cli.exe
setuptools-0.6c11/setuptools/command/
setuptools-0.6c11/setuptools/command/build_ext.py
setuptools-0.6c11/setuptools/command/upload.py
setuptools-0.6c11/setuptools/command/bdist_wininst.py
setuptools-0.6c11/setuptools/command/egg_info.py
setuptools-0.6c11/setuptools/command/__init__.py
setuptools-0.6c11/setuptools/command/setopt.py
setuptools-0.6c11/setuptools/command/install_egg_info.py
setuptools-0.6c11/setuptools/command/bdist_egg.py
setuptools-0.6c11/setuptools/command/install.py
setuptools-0.6c11/setuptools/command/bdist_rpm.py
setuptools-0.6c11/setuptools/command/install_lib.py
setuptools-0.6c11/setuptools/command/saveopts.py
setuptools-0.6c11/setuptools/command/develop.py
setuptools-0.6c11/setuptools/command/easy_install.py
setuptools-0.6c11/setuptools/command/build_py.py
setuptools-0.6c11/setuptools/command/install_scripts.py
setuptools-0.6c11/setuptools/command/sdist.py
setuptools-0.6c11/setuptools/command/rotate.py
setuptools-0.6c11/setuptools/command/alias.py
setuptools-0.6c11/setuptools/command/register.py
setuptools-0.6c11/setuptools/command/test.py
setuptools-0.6c11/setuptools/package_index.py
setuptools-0.6c11/setuptools/gui.exe
[root@localhost Desktop]# cd setuptools-0.6c11
[root@localhost setuptools-0.6c11]# ls
EasyInstall.txt ez_setup.py setup.cfg site.py wikiup.cfg
PKG-INFO launcher.c setup.py tests
README.txt pkg_resources.py setuptools version
api_tests.txt pkg_resources.txt setuptools.egg-info version.dat
easy_install.py release.sh setuptools.txt virtual-python.py
[root@localhost setuptools-0.6c11]# /usr/local/bin/python2.6 setup.py install
running install
running bdist_egg
running egg_info
writing setuptools.egg-info/PKG-INFO
writing top-level names to setuptools.egg-info/top_level.txt
writing dependency_links to setuptools.egg-info/dependency_links.txt
writing entry points to setuptools.egg-info/entry_points.txt
reading manifest file 'setuptools.egg-info/SOURCES.txt'
writing manifest file 'setuptools.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
running build_py
creating build
creating build/lib
copying pkg_resources.py -> build/lib
copying easy_install.py -> build/lib
copying site.py -> build/lib
creating build/lib/setuptools
copying setuptools/__init__.py -> build/lib/setuptools
copying setuptools/package_index.py -> build/lib/setuptools
copying setuptools/extension.py -> build/lib/setuptools
copying setuptools/depends.py -> build/lib/setuptools
copying setuptools/archive_util.py -> build/lib/setuptools
copying setuptools/dist.py -> build/lib/setuptools
copying setuptools/sandbox.py -> build/lib/setuptools
creating build/lib/setuptools/tests
copying setuptools/tests/__init__.py -> build/lib/setuptools/tests
copying setuptools/tests/test_resources.py -> build/lib/setuptools/tests
copying setuptools/tests/test_packageindex.py -> build/lib/setuptools/tests
copying setuptools/tests/doctest.py -> build/lib/setuptools/tests
creating build/lib/setuptools/command
copying setuptools/command/easy_install.py -> build/lib/setuptools/command
copying setuptools/command/__init__.py -> build/lib/setuptools/command
copying setuptools/command/alias.py -> build/lib/setuptools/command
copying setuptools/command/build_py.py -> build/lib/setuptools/command
copying setuptools/command/install_egg_info.py -> build/lib/setuptools/command
copying setuptools/command/register.py -> build/lib/setuptools/command
copying setuptools/command/setopt.py -> build/lib/setuptools/command
copying setuptools/command/install.py -> build/lib/setuptools/command
copying setuptools/command/upload.py -> build/lib/setuptools/command
copying setuptools/command/build_ext.py -> build/lib/setuptools/command
copying setuptools/command/saveopts.py -> build/lib/setuptools/command
copying setuptools/command/test.py -> build/lib/setuptools/command
copying setuptools/command/sdist.py -> build/lib/setuptools/command
copying setuptools/command/bdist_egg.py -> build/lib/setuptools/command
copying setuptools/command/develop.py -> build/lib/setuptools/command
copying setuptools/command/egg_info.py -> build/lib/setuptools/command
copying setuptools/command/rotate.py -> build/lib/setuptools/command
copying setuptools/command/install_scripts.py -> build/lib/setuptools/command
copying setuptools/command/install_lib.py -> build/lib/setuptools/command
copying setuptools/command/bdist_rpm.py -> build/lib/setuptools/command
copying setuptools/command/bdist_wininst.py -> build/lib/setuptools/command
copying setuptools/cli.exe -> build/lib/setuptools
copying setuptools/gui.exe -> build/lib/setuptools
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
copying build/lib/easy_install.py -> build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/__init__.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/package_index.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/extension.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/cli.exe -> build/bdist.linux-i686/egg/setuptools
creating build/bdist.linux-i686/egg/setuptools/tests
copying build/lib/setuptools/tests/__init__.py -> build/bdist.linux-i686/egg/setuptools/tests
copying build/lib/setuptools/tests/test_resources.py -> build/bdist.linux-i686/egg/setuptools/tests
copying build/lib/setuptools/tests/test_packageindex.py -> build/bdist.linux-i686/egg/setuptools/tests
copying build/lib/setuptools/tests/doctest.py -> build/bdist.linux-i686/egg/setuptools/tests
copying build/lib/setuptools/depends.py -> build/bdist.linux-i686/egg/setuptools
creating build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/easy_install.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/__init__.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/alias.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/build_py.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/install_egg_info.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/register.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/setopt.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/install.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/upload.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/build_ext.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/saveopts.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/test.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/sdist.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/bdist_egg.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/develop.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/egg_info.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/rotate.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/install_scripts.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/install_lib.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/bdist_rpm.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/command/bdist_wininst.py -> build/bdist.linux-i686/egg/setuptools/command
copying build/lib/setuptools/archive_util.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/dist.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/sandbox.py -> build/bdist.linux-i686/egg/setuptools
copying build/lib/setuptools/gui.exe -> build/bdist.linux-i686/egg/setuptools
copying build/lib/pkg_resources.py -> build/bdist.linux-i686/egg
copying build/lib/site.py -> build/bdist.linux-i686/egg
byte-compiling build/bdist.linux-i686/egg/easy_install.py to easy_install.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/package_index.py to package_index.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/extension.py to extension.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/tests/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/tests/test_resources.py to test_resources.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/tests/test_packageindex.py to test_packageindex.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/tests/doctest.py to doctest.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/depends.py to depends.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/easy_install.py to easy_install.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/alias.py to alias.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/build_py.py to build_py.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/install_egg_info.py to install_egg_info.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/register.py to register.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/setopt.py to setopt.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/install.py to install.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/upload.py to upload.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/build_ext.py to build_ext.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/saveopts.py to saveopts.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/test.py to test.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/sdist.py to sdist.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/bdist_egg.py to bdist_egg.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/develop.py to develop.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/egg_info.py to egg_info.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/rotate.py to rotate.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/install_scripts.py to install_scripts.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/install_lib.py to install_lib.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/bdist_rpm.py to bdist_rpm.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/command/bdist_wininst.py to bdist_wininst.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/archive_util.py to archive_util.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/dist.py to dist.pyc
byte-compiling build/bdist.linux-i686/egg/setuptools/sandbox.py to sandbox.pyc
byte-compiling build/bdist.linux-i686/egg/pkg_resources.py to pkg_resources.pyc
byte-compiling build/bdist.linux-i686/egg/site.py to site.pyc
creating build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/entry_points.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying setuptools.egg-info/zip-safe -> build/bdist.linux-i686/egg/EGG-INFO
creating dist
creating 'dist/setuptools-0.6c11-py2.6.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing setuptools-0.6c11-py2.6.egg
Copying setuptools-0.6c11-py2.6.egg to /usr/local/lib/python2.6/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11
[root@localhost setuptools-0.6c11]# whereis easy_install
easy_install: /usr/bin/easy_install /usr/local/bin/easy_install
[root@localhost setuptools-0.6c11]#
 尚、SentOSに入っているPython2.4については、パッケージ管理ツールで検索すると「python-setuptools」が存在したので、管理ポリシー上、そちらで導入した。
 尚、「python-seyuptools」についての詳細は「setuptools - The PEAK Developer's Center(原文)」かSumiTomohikoさんのBlogにある和訳「 [Python] setuptools」を参照すると、パッケージ配布する為のツールとしての説明も参照出来る。


 また、Python3.1に対しも試しにやったが予想通り以下の様なエラーになった。
     Python3用は別のパッケージなので、エラー発生。


[root@localhost setuptools-0.6c11]# /usr/local/bin/python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 7, in
execfile(convert_path('setuptools/command/__init__.py'), d)
NameError: name 'execfile' is not defined
[root@localhost setuptools-0.6c11]# /usr/bin/python
Python 2.4.3 (#1, Sep 3 2009, 15:37:12)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
[root@localhost setuptools-0.6c11]#
 でも、Python3用のeasy_installは、調べて試るとどうもパッケージ名も変わっている様で「distribute 0.6.8」が、Python3に区分されたPyPI内に存在した。現時点でのPython3のパッケージ供給はほとんどがソースコードなので実際に使う機会は少ないので、導入は見送ったが、Python3対応が進んでいる様で安心した。


 尚、以下は、virtualenvのインストール実行のものだ。バージョン管理の為には、この様なインストール時の出力をとっておいた方がいいのだろうな。setup.py install派には何か頼りなく感じてしまう。
     virtualenvパッケージのインストール(例)


[root@localhost setuptools-0.6c11]# /usr/local/bin/easy_install virtualenv
Searching for virtualenv
Reading http://pypi.python.org/simple/virtualenv/
Reading http://virtualenv.openplans.org
Best match: virtualenv 1.4.2
Downloading http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.4.2.tar.gz#md5=7b1a10f0e84dd945c9b006ace1e1bb16
Processing virtualenv-1.4.2.tar.gz
Running virtualenv-1.4.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ZDFsRg/virtualenv-1.4.2/egg-dist-tmp-fZ0e9n
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Adding virtualenv 1.4.2 to easy-install.pth file
Installing virtualenv script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/virtualenv-1.4.2-py2.6.egg
Processing dependencies for virtualenv
Finished processing dependencies for virtualenv
[root@localhost setuptools-0.6c11]# /usr/bin/easy_install virtualenv
Searching for virtualenv
Reading http://cheeseshop.python.org/pypi/virtualenv/
Reading http://virtualenv.openplans.org
Reading http://cheeseshop.python.org/pypi/virtualenv/1.4.2
Reading http://cheeseshop.python.org/pypi/virtualenv/license.html
Best match: virtualenv 1.4.2
Downloading http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.4.2.tar.gz#md5=7b1a10f0e84dd945c9b006ace1e1bb16
Processing virtualenv-1.4.2.tar.gz
Running virtualenv-1.4.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ABT9gR/virtualenv-1.4.2/egg-dist-tmp-ukt2Ym
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Adding virtualenv 1.4.2 to easy-install.pth file
Installing virtualenv script to /usr/bin

Installed /usr/lib/python2.4/site-packages/virtualenv-1.4.2-py2.4.egg
Processing dependencies for virtualenv
[root@localhost setuptools-0.6c11]#
 ※このeasy_installは、そのインストールしたPythonのバージョンに対して機能するので、Python2.4にインストールするときは「/usr/bin/easy_install 〜」で実行する。
タグ:Python CentOS Linux
posted by Mire at 05:28 | Comment(0) | TrackBack(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2009年11月08日

【CentOS5.4】Python2.6&Python3.1をInstallして既存分と共存利用

 暫しのテスト利用とはなるが、折角なので目の前にあるピカピカのCentOS5.4にPython2.6とPython3.1をソースからインストールして試た。

 今回やったことは次のことのみ。(ソースのDL場所を作りそこに移動しwgetでファイルを取得。tarで解凍し、コンパイルとインストール作業を2回しただけ)



mkdir ~/DownloadFiles
cd ~/DownloadFiles
wget http://www.python.org/ftp/python/3.1.1/Python-2.6.4.tgz
tar xvzf Python-2.6.4.tgz
cd Python-2.6.4
./configre
make
make install

cd ..

wget http://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz
tar xvzf Python-3.1.1.tgz
cd Python-3.1.1
./configre
make
make install


 このBlog検索の記録からも、時折、検索サイト経由で複数Versionの共存について興味を持った方のご来訪頂くので、その基礎的な内容を記述して置く。
 Python配布ソースから、Linuxにインストールする場合、その実態は既定で、/usr/local内に形成され、実行ファイルは、/usr/local/bin内に/python2.6という様なファイル名で、その他のライブラリは、/usr/loca;/lib/python2.6という様なディレクトリ内に、メジャーバージョン番号を伴った名前を付けてインストールされる。従って、セキュリティ、BUG修正によるマイナーバージョンを除き、必要なバージョンを複数インストールすることが出来るのだ。
 従って、Pythonでの複数バージョンの共存利用で唯一気にしなければならないことは、既存のPythonで書かれたものがどのバージョンで実行されるのかという仕組みについてだ。
 Linuxでこの様に追加インストールした場合、原則、最後にインストールしたものが既定のPython実行環境となる。その確認は、コンソールで「python」と叩いて頂けれは以下の様に容易に確認出来る。ただ、python3.x系についしては、混乱防止の為だろうか、今のところpython3として別途登録されているので、後でインストールしても影響しない。つまり、明示的にpython3として区別して指定する必要がある様だ。



[root@localhost ~]# python
Python 2.6.4 (r264:75706, Nov 5 2009, 23:51:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

 同様にその既定バージョン以外のPythonを利用したい場合には、当り前だが、その実行ファイルを「/usr/local/bin/python2.6」等の様に指定すれば、それぞれのバージョンの対話モードが利用可能となる。pythonは起動と同時にバージョン情報をコンソール出力で確認できるので、この点は、利用を始めれば問題はないだろう。

 また、「python」と叩くだけで起動する、この既定のPythonのバージョンが何処で決まるかと言うと、環境変数PATHの順番によっている。環境変数はlinuxコマンドenvで表示出来るかと思う。PATHのみを表示させたい場合には以下の様にgrepでPATHのみを抽出すると良いだろう。



[root@localhost ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
(Windowsでは、この辺、手動で環境変数PATHを書きかえることで既定が決まるし、標準ではPythonが入っている訳ではない。)

 無論、所詮PATHの働きは、カレントディレクトリにpythonがない場合に有効となるので、特定の自作ツールでバージョンを一括で替えたい場合には、「ln -s /usr/local/bin/python3.1 python」等としてシンボリックリンクを張ればそのディレクトリにchして実行する限りは、そのバージョンが既定として利用されることになる。つまりOSの挙動に依存するだけのことである。

 また、Pythonに限らず、UNIX系のOSでは、スクリプト系言語の場合には、そのソースコードの一行目の記述により、実行スクリプト言語を明示することが、バージョン齟齬によるトラブル回避には不可欠であり、通常、心あるツールはこれにより制御されている。従って、Linuxでは、インストーラからちょい使いのツールに至る迄、Pythonツールが多く収録されているが、/usr/binにあるpythonを明示利用する為、挙動を替えることはなく、yum等によるOSのupdate時にpythonがマイナーupdateされても問題が起こることはないのだ。

 さらに、ユーザ独自に利用するモジュールについては、そのインストールに置いて、利用するバージョンを「/usr/bin/python」とか「/usr/local/bin/python2.3」の様に明示して、「setup.py install」すれば、そのsite-pagkagesにインストールされ、そのバージョンでのみ利用可能となる。かつてのZopeではその依存するpythonをバンドルしてインストール、その利用が既定であった。

 ツール作成者がこの辺りを理解し、提供システムを配布する限りトラブルことはない。

 LinuxでのPythonのソースからのインストールでは、一般的な開発ツール(gccとそのライブラリ)が当然必要である。これは、後日、ソース提供しかないモジュールを追加するときにも必須なので、OSインストール時に導入し、最新にUpdateしてから利用するとよい。尚、暗号化等一部は、OSの標準インストールでは、そのライブラリがインストールされない為、Python側で後日利用出来ないで困ることもあるかもしれない。その時に、インストール時の記録があると原因が掴み易い。



 Pythonのソースインストールでは、そのインストールで、依存する外部ライブラリの存在をチェックし、利用可能なもののみが組込まれ有効となる。当方のCentOSでは、標準的な開発ツールにX関係の開発ツールを加えた程度での実行であり、それ以外に必要なものがあれば、それは正常には実行できない筈だ。インストールに当たっては、後日の為、インストール時の記録を残す為、「script ~/InstallPython20091106.txt」等としてから行ない、終わったら、「exit」して置くことをお勧めする。

 Pythonは今、Python3への移行というメジャーイベントの最中だが、著名なモジュールにおいて、Python2.5迄のリリースで止め、移行ステップとして取り組んでいるのではと思えるものある一方、Python2.6に移行済みのものが存在する。また、もうそろそろ2.7も正式リリースになるだろうし、Python3への主要モジュール移行が完了する迄は、恐らく、2.5、2.6、2.7,3.xの4つを対応モジュール次第で混用することになるだろう。その意味でも複数バージョンの使い分けは必要となる。勿論、一番問題になるのは事実上バイナリ供給が必須なWindows向けで、Linixでは2.5に対応していたら、問題になることが殆どないとは思う。
 WindowsのPython2.x系では、「python -c "import <モジュール名>;help(<モジュール名>);"」で__doc__として日本語記載したヘルプ情報を表示しようとした場合、lib/site-packages/sitecustomize.pyで「Shift_JIS」系を指定して置く必要がある等、結構使い辛い。それを考えると、出来るならLinixにPythpn2.x系を入れ、lib/site-packages/sitecustomize.pyで「UTF-8」系を指定して、TELNET or SSHで開発した方が楽出来るものと思う。ということで、そろそろ、My NotePCにもLinuxを共生させることにしたい。
タグ:Python CentoOS
posted by Mire at 16:14 | Comment(0) | TrackBack(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2009年07月02日

MinGW でも python setup.py install が出来るんだ!!

 厨房なもので、今頃「MinGW python setup.py install」でググって判った。それで「!!」がタイトルについている。ネタ元は「JapaneseWindowsInstall」です。

 当方はもともと、Linux上でPythonを使い始め、戦場はもっぱらLinuxであった関係で、setup.py install で、必要なモジュールのインストールをしていた。ただ、たまにWindows側で実行させたいものが発生したときに、Windows専用のインストーラを探すのに結構苦労していたものだ。所詮サブのWindowsにその為だけにVCを購入する気はないので諦めていた。
まあ、言い訳はこれくらいにして、はい、本論。

 当方の環境では、MinGWのみをインストールしているので、
python setup.py build --force -c mingw32
python setup.py install --force --skip-build

または
python setup.py build -f -c mingw32 install -f
とすれば良いとのことだ。

 今のところ、試す利用機会がないので放置だが、試したらその内容をまた投稿することにする。
posted by Mire at 03:26 | Comment(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2008年10月15日

Python用にMKEditorを設定

 素のままでもMKEditorは使えないことはないが、MKEditorはオプション設定でカスタマイズすることで、使い勝手を向上することが出来る。
 仕事でシステム作成していた時には気持に余裕もなく、していなかったが、今回、手を入れて試ることにした。カスタマイズ自体は結構簡単だ。

環境オプション設定


  • ファイル保存時と読込時の不具合
  •  残念ながら、素のまのだとMKEditorのファイル読込でPyhtonのファイル(*.py)が表示されないし、保存時にも、拡張子を手入力しても「.txt」が自動付加されてしまい、拡張子が「*.py」のPyhtonコードファイルが作成出来ない。
  • 解決策
  • MKEditor_ENVopt_FIleFilter.png 右図をクリックし拡大して見て欲しい。これは、MKEditorのメニューの「ツール(T)」より一番下の「環境オプション(O)」を選択し、左欄内の「ユーザーインターフェイス」の「ファイルフィルタ」をクリックすることで表示される。次の3つを設定し、「適用」ボタンと「OK」で完了する。
    1. デフォルトフィルタに「ユーザ指定 2」を選択
    2. ユーザ設定のフィルタとして「ユーザ指定 2」を選択し、その定義として「*.py;*.txt;*.h;*.c;*.cpp;*.ini;*.inf;*.log;*.conf」の様に個人的に必要なものを入れる。
    3. 「ファイルのセーブダイアログ」にある「デフォルトのフィルタ」として「全てのファイル(*.*)」を選択

    4. 出来ないこと
    5.  残念ながら、文字コードと改行コードの指定は「名前を付けて保存」時にするしかない様だ。忘れずに指定しよう。自分の場合は、文字コードは「Unicode(UTF-8)」、
      改行コードは「改行=LF」となる。



 さて、次回は、Python独自の設定をエディタオプションで行なう予定だ。

posted by Mire at 01:42 | Comment(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする

2008年10月12日

Pythonと文字コード

 さて、幸い手元には、旧来の手持ちモジュールがないと言うか、頭の中がクリア(空)になっているので、文字コードをUTF-8に切替えようと思った。旧来のモジュールは当初Shift_JIS中心に作成し、途中でEUC-JPを混用していたが、この際、国際化も踏まえユニコード完全対応の道を歩もうと言う訳だ。必要なことは次の通り。尚、漏れや誤りかあれば、適宜修正する予定だ。
  • ユニコード対応のテキストエディタの利用
  •  当然ながらユニコードで書けるテキストエディタがなければ何も出来ない。今回は元々から使っていたMkEditorを活用するとこにした。厳密にはCJK拡張文字B区画の文字も欲しいので利用フォントに「メイリオ」が利用出来るものを使いたいが、フリーなものは探せなかった。それでもMKEditorは、基本的にはUnicodeに対応しているので、名前を付けて保存時に「UTF-8」を指定すれば良いだけだ。ただ、使い勝手として、拡張子を「*.*」にしないと、「.txt」が強制付加されるてしまうので。初期作成時等は注意しよう。  尚、「メイリオ」利用が出来るのかを気にしているのは、崎や吉などの拡張された異体字の記入が可能だからである。名簿管理等を考えると将来的にはエディタの内部処理コード自体もユニコードである必要がある。そんなシステムを作る折には対応エディタに乗換える必要がある。
  • 記載コードの明示
  •  2.3以前?のPythonでは、文字コードは暗黙でASCCIとされ、Shift_JISで書くなら、エスケープ文字に気を使う必要があった。その為、Linux環境では当然EUC-JPを利用することが当たり前であった。  しかし、2.4からはソースコードのコーディングを2行目に書くことが推奨され、2.5からは必須となっている。  で、今回からは、次の記述を2行目に加えることになる。尚、Shift_JISのコード文字の範囲での利用ならば「Shift_JIS」を指定すると良い。
  • 文字リテラル表記の頭に「u」を付ける
  •  ソースコードに書く文字列自体は、エディタで指定した文字コードになるが、ソースコード上でのUnicode文字列であることを明示する手法として文字リテラル表記の頭に「u」を付けることになる。今回、自分はエディタでもUTF-8を指定したので、これは不要かと思っていたが、つけないと、len()や文字列スライスの処理で正常に動作しなかった。
  • 「sitecustomize.py」でのローカル環境設定
  •  実行環境での利用文字コードの統一は必要なことではあるが、それを一括して設定する手法として次の記述を、利用したいPythonをインストールしたディレクトリの「Lib/site-packages」に「sitecustomize.py」として入れておくと良い。Zope等のPythonの大規模アプリでの日本語の安定利用には必須な対策である。
posted by Mire at 02:34 | Comment(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする
月額見放題1,000円開始キャンペーンバナー(画像ありver)
紺碧の艦隊 ルパン三世 GREAT CHASE クリックプロモーション
<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリ
タグクラウド
ファン
利用中のオープンソース
最近のコメント
最近の記事
過去ログ
QRコード
レガシーなアプリはいかが?
Dell 法人のお客様ページ
  • 【法人様向け】デル、お得なキャンペーン情報
  • 法人のお客様向け ストレージソリューション
  • 法人のお客様向け ネットワークソリューション
  • 【SOHO法人様向け】デル・オンライン広告限定ページ
  • デル-個人のお客様ページ
  • 【個人のお客様向け】デル・オンライン広告限定ページ
  • オンライン広告限定キャンペーンページ
  • ソフトウェア&周辺機器 パソコン工房
    ツートップインターネットショップ(twotop.co.jp) マウスコンピューター/G-Tune
  • ×

    この広告は1年以上新しい記事の投稿がないブログに表示されております。