質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Python

    7515questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 3.x

    5925questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

「実践力を身につけるPythonの教科書」の「WEBアプリを作ってみよう」(Cap5-2)の質問です。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 398

実践力を身につけるPythonの教科書の「WEBアプリを作ってみよう」での質問です。

プログラミング言語を学習し始めようやく1か月経った初心者です。
今回はこの2点について質問させてもらいます。

  1. Python3がコマンドライン上で実行できない
  2. 簡易Webサーバのcgi-binが開けない**

質問1

python3 -m http.server --cgi 8080


これが実行できず四苦八苦しております。
これの代わりに

python -m http.server --cgi 8080


で実行したところ何とか出来ました。
(今までもこれで実行して大体は行けました。)
ここでもう間違っているとは思うのですが、
そもそも「python3」が実行できないというところでおかしいと思います。
そのため、[Python3.5.2]を一度アンインストールし[Python3.6.2]を新たに導入しました。
そして、再度、環境変数のパスも追加した上で何度も実行いたしましたが、うまくいかず途方にくれました。
これを解決するにはどうすればいいのだろうと思い、ここで質問して解決しようと思った次第です。

質問2
更に質問が続くようですが、{cgi-bin}のフォルダを作り
中に

[kakugen.py]←ファイル名

#!/usr/bin/env python

#ヘッダ情報を出力
print("Content-Type: text/html; charset=utf-8")

#ヘッダと本体データを区切る空行
print("")

#本体データを出力
print("<html><head><meta charset='utf-8'><body>")
print("千里の道も一歩より")
print("</body></html>")


というファイルを作りこれを開こうとしましたが
そもそもその前の{cgi-bin}が開けませんでした。
以下がエラーメッセージです

エラーメッセージ

[localhost:8080/cgi-bin]←アドレス

Error response
Error code: 403
Message: CGI script is not a plain file ('/cgi-bin/').
Error code explanation: HTTPStatus.FORBIDDEN - Request forbidden -- authorization will not help.


他にも似たような質問があったのでこちら[https://teratail.com/questions/89016]を参考にしてみたのですが
全く解決できませんでした。

解決に向けての対応

この[cgi-bin]がいけないのかと思い、[cgi]に名前を変更したところ
今度は何とか開けましたが、kakugen.pyを開くと元のソースコードが文字化けした状態で出力されました。
そこで、エンコードを[Shift JIS]から[UTF-8]に変えてみたところ文字化けが治っただけでソースコードが依然として表示されます。

Python3.6.2がおかしいのではないかと疑い、環境変数を再度確認し、再起動もかけましたが何も解決できませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

現在の開発環境は
Windows10
Python3.6.2
Atom
たまにSpyderを使います。

不束なところがあると思いますが、ご協力お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • coco_bauer

    2017/09/15 15:47

    質問1に関して) python3.6.2の"python"がソフトウェア名で"3.6.2"はバージョンです。だから、"python"で実行できるのが正しいのです。

    キャンセル

  • -_.Del.mosick

    2017/09/15 16:14

    やはり、そうでしたか。こういうシステム的なことは疎くて参ってしまいますが、ご教授してくださりありがとうございました!

    キャンセル

回答 1

checkベストアンサー

0

コマンドの実行方法、よく自分で見つけれましたね。素晴らしいと思います。

さて、一つずつ回答していきます

 質問1の回答

WindowsでPython3系列のみインストールしたならば、python となってしまうのは仕方ないと思います。パスを張った先の実行ファイル名がpythonでしょうから。

 余談

MacやLinuxでは2017年9月15日現在で標準で呼ばれるPythonは、プリインストールしているPythonのVer.2系です。

そのため、pythonの3系を明示的に呼び出すときは、大抵python3と明示的に打ってます。

/* 読み抜かしたところに注意があったのかもしれませんし、そもそも書いていないのなら、Mac・Linuxユーザーのみを想定した書籍なんでしょうね(遠い目) */

 質問2の回答

Python3のソースコードの文字コードは、基本的にUTF-8です。そこに気づいたのは素晴らしいです。

また、kakugen.py#! の行はUNIXシステムでスクリプトを直接実行する際に、何の言語の処理系で実行するかを明示する行ですので、今回Windowsのみでの動作を想定しているなら、特に必要ないです。(「シェバン」と言ったりします)

また、Webブラウザでアクセスするアドレスが違います。フォルダ名とかは特に関係ないです。

今回の場合ですとhttp://localhost:8080/cgi-bin/kakugen.pyと、ファイル名まで含めてアクセスするのが正しいはずです。


とりあえずまずはここまで試してみてください。
コメントによる追加質問はもちろん受け付けております。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/15 16:12

    ご回答いただきありがとうございました。
    質問1:python3とはそう意味だったんですね(驚愕)
    では、こちらの教科書はWindowsではなくOS-Xなのですか。

    質問2:
    今までの環境が悪かったのかと思い、
    先ほど早速Firefoxを導入し立ち上げたところ開くことができました!
    しかし、firefoxで開いたところ以下のような文字化けが起こりました。
    「�������Ƃɑ�����邱�Ƃɒx������ׂ� 」
    Firefoxはよくわかりませんが、いろいろと調べて解決していこうと思います。

    余談になりますが、こういった環境でのおすすめのブラウザはありますか?

    丁寧な質問でわかりやすく、理解ができました。
    途方に暮れていたので感謝の念が堪えません。本当に、ありがとうございました!

    キャンセル

  • 2017/09/15 16:36

    おすすめのブラウザはChromeという方が多いですが、僕はFirefoxですね(笑)

    しかしながら、やはりブラウザ互換性やChromeユーザーも多い昨今ですので、Chromeのオープンソース実装のChromiumは一応入れてます。そんな偏屈者です。

    キャンセル

  • 2017/09/15 18:53

    使用者数もChromeの方が多いようですね。[https://lab.syncer.jp/Statistic/Browser/]
    僕もChromeを長年使ってますが正直言ってどれがいいのかわからないのですよね(汗)
    しかし、今回はエンコードのためにfirefoxを入れてみたのですが意外と使いやすかったのでしばらく使ってみます。

    最後になりますが
    先ほど、エンコードを変えてやってみるときちんと出力されました。
    この度は本当にありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7515questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 3.x

    5925questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。