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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

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

Python

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

Q&A

解決済

1回答

2649閲覧

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

-_.Del.mosick

総合スコア12

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/09/15 06:20

###実践力を身につけるPythonの教科書の「WEBアプリを作ってみよう」での質問です。
プログラミング言語を学習し始めようやく1か月経った初心者です。
今回はこの2点について質問させてもらいます。

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

質問1

python

1python3 -m http.server --cgi 8080

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

python

1python -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を使います。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/09/15 06:47

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

2017/09/15 07:14

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

回答1

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 06:48

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-_.Del.mosick

2017/09/15 07:12

ご回答いただきありがとうございました。 質問1:python3とはそう意味だったんですね(驚愕) では、こちらの教科書はWindowsではなくOS-Xなのですか。 質問2: 今までの環境が悪かったのかと思い、 先ほど早速Firefoxを導入し立ち上げたところ開くことができました! しかし、firefoxで開いたところ以下のような文字化けが起こりました。 「�������Ƃɑ�����邱�Ƃɒx������ׂ� 」 Firefoxはよくわかりませんが、いろいろと調べて解決していこうと思います。 余談になりますが、こういった環境でのおすすめのブラウザはありますか? 丁寧な質問でわかりやすく、理解ができました。 途方に暮れていたので感謝の念が堪えません。本当に、ありがとうございました!
manzyun

2017/09/15 07:36

おすすめのブラウザはChromeという方が多いですが、僕はFirefoxですね(笑) しかしながら、やはりブラウザ互換性やChromeユーザーも多い昨今ですので、Chromeのオープンソース実装のChromiumは一応入れてます。そんな偏屈者です。
-_.Del.mosick

2017/09/15 09:53

使用者数もChromeの方が多いようですね。[https://lab.syncer.jp/Statistic/Browser/] 僕もChromeを長年使ってますが正直言ってどれがいいのかわからないのですよね(汗) しかし、今回はエンコードのためにfirefoxを入れてみたのですが意外と使いやすかったのでしばらく使ってみます。 最後になりますが 先ほど、エンコードを変えてやってみるときちんと出力されました。 この度は本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問