python

リダイレクトするとエラーになる

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

と出るときの対処方。これは

print(body.encode(sys.getfilesystemencoding()))

でよい。

Apache and mod_wsgi

apt-get update
apt-get upgrade
apt-get install apache2 python-setuptools libapache2-mod-wsgi

ls -alt /etc/apache2/mods-enabled/wsgi.load
⇒できた

mkdir ~/flask
cd ~/flask

cat testwsgi.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'wsgi'

if __name__ == '__main__':
    app.run()

cat test.wsgi
# -*- coding:utf-8 -*-
import sys, os
sys.path.append('/home/kanai/flask')
from testwsgi import app as application

cat /etc/apache2/sites-enabled/001-wsgi-test

WSGIDaemonProcess  user=root group=root threads=5
WSGIScriptAlias /hoge /home/kanai/flask/test.wsgi
WSGIScriptReloading On


とかかく

その他

importを使うとmoduleとしてincludeされる。単に「その場にあるように読み込みたい」ときはexecfile(<path>)

実行しているスクリプト自身は__file__あるいはsys.argv[0]で分かる。 実行しているスクリプトのディレクトリについて考える。 __file__のみの場合、~/a.pyとかで実行されているとパスが正常に返らないので、 sys.path.dirname(sys.path.abspath(__file__))でよい。 スクリプト名自信はos.path.basenameでとる。

カレントディレクトリについては、os.getcwd()でよい。

sudo easy_install PyYAML
sudo pip install PyYAML --proxy=127.0.0.1:8080