sys¶
- sys.platform¶
コマンド uname と同じ結果を返します。
sys.pathについて¶
importライブラリのパスが入っています。
-Sをつけると、実行時にsiteモジュールは読み込まれません
python -c "import requests" #ok
python -Sc "import os" #ok
python -Sc "import requests" #error!
ちょっと site.addsitedirについて分らないことがあったのでメモ。 Python起動時にsiteモジュールは自動的にインポートされる。(-S をつけるとインポートしない) site-packages自体とその直下の.pthファイルに書いてあるモジュールをsys.pathに追加する。
後から、「/hoge/my-lib/複数のモジュール」にPATHを通す必要があるとき sys.path.insert(0, ‘/hoge/my-lib’)
だと上手くいかない。なぜならモジュールの多くは my-lib/ hoge-2.1.1//hoge /__init__.py /hogemodule1.py
のような構成になっているので、my-lib直下に__init__.pyが無いためにPythonがその下のモジュールを見つけられないためだ。
どうしても、sys.pathを使う場合は
import sys
import os
sys.path.insert(0, os.path.join('/hoge/my-lib/hoge-2.1.1'))
sys.path.insert(0, os.path.join('/hoge/my-lib/fuga-2.2.1'))
sys.path.insert(0, os.path.join('/hoge/my-lib/hum-1.1.3'))
のように一つ一つのモジュールを指定してあげる必要がある。
しかし、それだと非常に面倒なので/hoge/my-lib/mypackage.pthのような.pthファイルに hoge-2.1.1 huga-2.2.1 hum-1.1.3
とテキストファイルを用意し from site import addsitedir
addsitedir(‘/hoge/my-lib’)
と、してあげると.pthファイルに書いてあるモジュールを一つ一つにPATHを通してくれる。
importできるモジュールを一覧 sys.modules
エラー強制終了 sys.exit(1)
- sys.path
- byteorder
- sys.argv
python *.py
と
./*.py
では、argv[0]にパスが入るかどうかが異なる