LoginSignup
5
7

More than 5 years have passed since last update.

MAMPでPython3をブラウザに表示

Last updated at Posted at 2017-06-07

MAMPでPython3をブラウザに表示させます

忘備録として、できるだけ詳しく書いていきます。

目次

  • 環境
  • 手順
    • サンプルコード
    • 実行結果
  • エラー時の対処法

環境

OS :MacOS
環境 :MAMP
言語 :Python 3.6.1
ブラウザ :chrome
テキストエディタ :Atom

手順

  • Apache設定

アプリケーションのfinderでhttpd.confを検索 

場所は

/Applications/MAMP/conf/apache/httpd.conf

にありました。

httpd.confにて

#AddHandler cgi-script .cgi


AddHandler cgi-script .cgi .py

に変更し、httpd.confを再読み込みするためにMAMP再起動

 

  • 実行権限(パーミッション)の変更

プログラムの実行権限を与えるために、

例えばtest.pyを作成したら

ターミナルで
$ chmod 755 test.py

と打ちましょう。

No such file or directoryと出るなら、

ターミナルでの現在の場所が間違っているので、cdコマンドで移動しましょう。

 

  • test.pyの作成

1行目はpythonのインタプリタの場所です。

わからないときは、ターミナルで

$ which python3

とすれば、

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

などと出てきます。

 
2〜5行目は、日本語表示する際に必要です。

 
6行目以降は、Python3でHTMLを書くならこれです。なくても構いません。

その場合は12行目だけでいいですね。

 
サンプルコード

test.py

#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

print("Content-Type: text/html; charset=utf-8")
print("")
print("""
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <h1>It works!</h1>
    <p>chmod 755 /Applications/MAMP/htdocs/chatbot.py</p>
    <p>finder :apache_error.log</p>
    <p>本文</p>
    </body>
    </html>
    """)

print('お疲れ様です。')

実行結果

スクリーンショット 2017-06-02 12.36.57.png

 
 

エラー時の対策

 

ブラウザでエラーが出ているなら、

finderでapache_error.logを検索し、

コンソールでapache_error.logを確認して見ましょう。

以下、いくつかよくあるものをメモしておきます。

 

malformed header from script
HTTPヘッダーが不完全な場合

3から12行目が間違っている可能性があります。

 

Exec format error
実行形式エラーでよくあるのが、

1行目に正しいPythonの実行ファイルがある場所を示していないことです。

ターミナルで、1行目に指定してある場所が正しいか、試しに

バージョンを確認して見ましょう。

$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 --version

などと打って

Python 3.6.1

などと出れば大丈夫です。

 

Permission denied
パーミッションエラーでは、実行しようとしているファイルの実行権限がないということです。

ターミナルで

$ chmod 755 実行したいファイル名

などと打ってあげてください。

   

UnicodeEncodeError: 'ascii' codec can't encode characters

日本語などを書いたときに出てきます。

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

は書かれていますか?
 

その他
インデントエラー(IndentationError)、

構文エラー(SyntaxError)はpython公式HPを確認してください。

   

 

質問、要望など

気軽にツイッターのDMどうぞ!

下の鳥さんをクリックすると、サブアカウントに飛びます。

    ,,,
  
/::o・ァ  ♪ 
∈ミ;;;ノ,ノ

   
 
 

5
7
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
5
7