MAMP에서 Python3을 브라우저에 표시

MAMP에서 Python3을 브라우저에 표시

망비록으로서 가능한 한 자세하게 써 갑니다.

목차


  • 환경
  • 절차
  • 샘플 코드
  • 실행 결과

  • 에러시의 대처법

  • 환경



    OS : MacOS
    환경 :MAMP
    언어 : 파이썬 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 만들기

  • 첫 번째 줄은 파이썬 인터프리터의 위치입니다.

    모르면 터미널에서
    $ 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('お疲れ様です。')
    
    

    実行結果

     
     

    에러시의 대책

     

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

    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)는 파이썬 공식 HP를 확인하십시오.

       

     

    질문, 요청 등

    부담없이 트위터의 DM 부디!

    아래의 새를 클릭하면 하위 계정으로 날아갑니다.

        ,,,   /::o・ァ  ♪  ∈미;;;노, 노

       
     
     

    좋은 웹페이지 즐겨찾기