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

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

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

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

Q&A

解決済

4回答

2091閲覧

pythonで作ったプログラムがターミナルで動かないです、、、

otokojisyaku

総合スコア10

Python

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

0グッド

0クリップ

投稿2019/05/12 14:29

イメージ説明
イメージ説明
イメージ説明
書き込んだプログラムをpythonの二枚めの画面でRun moduleで実行すると正常に行われるのですが、ターミナルで実行しようとすると三枚目のエラーがででしまいます。
どこを改善すればいいでしょうか、、、?

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

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

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

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

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

guest

回答4

0

ベストアンサー

自分はWindowsなので質問者さんと環境が違うのですが、Pythonを動かす環境は常にUTF8(プログラムのソースも実行する際のコンソール/端末のエンコーディングも)にしています。その方が物事が簡単に進むからですが・・・

エラーメッセージをみるとbashから起動したpythonインタープリタはソースコードのデフォルトのエンコーディングをUTF8ではなくlatin1と仮定しているようです。そこから以下の推測をしました。

bash

1$ locale 2LANG=ja_JP.UTF-8 3LC_CTYPE="ja_JP.UTF-8" 4LC_NUMERIC="ja_JP.UTF-8" 5LC_TIME="ja_JP.UTF-8" 6LC_COLLATE="ja_JP.UTF-8" 7LC_MONETARY="ja_JP.UTF-8" 8LC_MESSAGES="ja_JP.UTF-8" 9LC_ALL= 10 11$ python -V 12Python 2.7.16 13 14$ python3 -V 15Python 3.7.3 16 17$ echo '金' | od -tx1 180000000 e9 87 91 0a # 回答者注: UTF8で文字'金'はバイト0xe9で始まる 190000004 20 21$ cat kin.py 22print('金額') 23 24$ python3 kin.py 25金額 26 27$ python kin.py 28 File "kin.py", line 1 29SyntaxError: Non-ASCII character '\xe9' in file kin.py on line 1, but no encoding 30declared; see http://python.org/dev/peps/pep-0263/ for details 31 32$

自分の環境(Windows10, cygwin 64bit)だとデフォルトでCPython 2.7.xがインストールされており、そこへCPython 3.7.xをインストールすると

Python 2.7を起動する場合はpythonコマンド、
Python 3.7を起動する場合はpython3コマンド、

のような環境になります。これはcygwinへの移植をしてくれている方がLinuxの一般的なインストールに合わせているからではないかと思っています。

さてPython3系であればソース上に#coding: utf8と明記しなくてもソースコードをUTF8前提でパースしてくれると思うのですが、2.xだとエンコードを明記しないとlatin1でパースされると思います。

上の例のようにpythonで実行すると(2.7が動き)ご質問のエラーメッセージと同様になったのでひょっとしたらpython 2.7系のインタープリタを動かしてしまっているのではないかと思いました。

Macintoshの環境がないので詳細をよく知らないのですがネットの記事なんかをチラ見するとMacでも似た感じになっているように思えるので質問者さんがそうとは知らずにPython 2.7を動かしているような気がします。多分以下のようになるのではないでしょうか。

bash

1$ python -V 2Python 2.7.x(xがいくつかはわかりません) 3 4$ python3 -V 5Python 3.7.3 6 7$ locale 8詳細はわかりませんが、きっとUTF8になってる気がします。

もし上のとおりなら対処は簡単でターミナルで実行する際にpythonではなくpython3を実行すればよいと思います。

投稿2019/05/12 15:30

KSwordOfHaste

総合スコア18394

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

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

otokojisyaku

2019/05/13 07:34

ありがとうございます!ずっとpythonとコマンドを打っていました、、、 細かい領域まで説明してくださってありがとうございます!
guest

0

エラーメッセージは、「\xE9という非ASCII文字が1行目にあったが、エンコーディングが宣言されていない(ので、どういう文字なのか分からない)」というエラーです。
エラーメッセージに出ているURLにエンコーディングの宣言方法が書いてあります。

というか、こういうコードが書けると言うことは、入門書か入門サイトを見てのことだと思いますが、そこに書いてなかったですか?

投稿2019/05/12 15:10

otn

総合スコア84505

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

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

otokojisyaku

2019/05/13 07:37

入門書には書いていませんでした、、、python3を使うことが前提になっているものだったので書いていなかったようです、、、  宣言ということを知らなかったのでとても助かりました。ありがとうございます!
guest

0

細かなところは、確認してませんが、よくある文字コードエラーですね。

簡単には、半角英数字のみにすれば、解決すると思います。

保存時のコードが Shift-JISになっていると思うので、UTF-8にすれば、良いと思ったですが、ここでよくある質問なので、検索すると同じような質問が見つかると思います。

投稿2019/05/12 15:03

pepperleaf

総合スコア6383

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

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

otokojisyaku

2019/05/13 07:38

半角のみで成功しました。宣言コードをわかりやすく説明してくださってとても助かります!ありがとうございます
guest

0

日本語とか混じるのであれば、1行目に

python

1# coding: utf-8

を書きましょう〜

投稿2019/05/12 15:01

takepan1973

総合スコア821

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

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

takepan1973

2019/05/12 15:05

↑に則れば、ちゃんとシバン行も書いた方が良いですね。 #!/usr/bin/python # -*- coding: utf-8 -*-
otokojisyaku

2019/05/13 07:40

わざわざURLまで貼ってくださってありがとうございます、、、!とっても助かります!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問