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

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

ただいまの
回答率

90.48%

  • Python

    12188questions

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

  • Docker

    1082questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

PowerSellからpythonプログラムを実行しても日本語だけ出力されない

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,524

chida3

score 9

10/29
Docker Quickstart Terminalからコンテナを作成・実行した場合は、日本語も含めて表示することができました(その際の手順は最下記)。 KitematicからEXECをクリックして立ち上がるWindows Power Shellでは依然として同様の現象が発生しているため、引き続き回答を求めております。

Python超初心者です。
吉谷愛『土日でわかるPythonプログラミング教室』を読みながら勉強中ですが、初歩で詰まってしまいました。

環境
OS:Windows8.1 Pro
※上記の書籍にしたがい、下記を開発環境として準備。
・Docker
・Kitematic

現象と質問

『土日でわかるPythonプログラミング教室』p50以降で、hello worldプログラムを作成するという簡単な課題があります。

【hello.py】

print("土日で分かるpython教室")


上記のプログラムをターミナルから実行したのですが、下図のように、半角英数字のみ出力され、日本語部分だけ出力されません。
実行結果

どのようにすれば、日本語部分も出力されるようになるのでしょうか?
(ネットで調べてみたりもしたのですが、文字化けの報告はありましたが、「全く表示されない」という事例が見つけられなかったので……)

Python、Dockerともに全くの初心者であるため、調査不足・情報提示不足でしたらご指摘いただけますと幸いです。
よろしくお願いいたします。

ここまでの手順

本書の内容に沿ってここまでやった内容を記載します。
「ここもっと詳しく」などありましたら、ご指摘ください。

※注意
下記手順01の「Docker Toolboxのインストール」ですが、当初本書記載通りでなく、E:\Docker Toolboxにインストールしました。
ただ、そのときも同様の事象が発生したため、いったんアンインストールし、再度下記手順をやり直しています。
どこまで関連性があるのかわかりませんが、念のため追記しておきます。

事前確認)仮想化機能が有効になっているか確認
⇒OK

01)Docker Toolboxのインストール
①下記よりインストーラダウンロード
https://www.docker.com/products/docker-toolbox
②下記に「Full installation」を選択してインストール
C:\Program Files\Docker Toolbox
③DockerクライアントとしてKitematicを起動
⇒インストール完了、Kitematicも起動確認

02)Pythonプログラミング環境の構築
①Kitematicを使用して、あらかじめ用意された開発環境イメージからコンテナ生成
・Docker開発環境イメージ名:pythonver2
・ローカルのフォルダ名:donichipython(C:\Users\[ユーザ名]\donichipython)
・コンテナのフォルダ名:donichiconpython
Kitematicより「Docker CLI」をクリックして出現するターミナルで下記を入力。

# docker create -it -p 80:80 -v /c/Users/[ユーザ名]/donichipython/:/root/donichiconpython --name donichicon donichi/pythonver2


⇒Kitematic画面にて、donichiconコンテナ生成を確認。マウントも確認。
②コンテナに接続する
⇒Kitematicからターミナル起動を確認。
③Webサーバを立ち上げてみる
(今回の質問と直接関連しないと思われるため、手順割愛)
⇒Webサーバの立ち上げ確認済。

03)Pythonプログラムの作成と実行
①下記にソースコード配置
C:\Users\[ユーザ名]\donichipython\hello.py
②下記コマンドを実行

  # source ~/.bash_profile
  # python --version     (version3.5.2になります)
  # cd donichiconpython
  # python hello.py

コンテナの各種設定

Kitematicから確認できるコンテナの設定について追記しておきます。

Volumes
C:\Users\[ユーザ名]\donichipython

General
環境変数
no_proxy=*.local, 169.254/16, 127.0.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=ja_JP.UTF-8

Docker Quickstart Terminalでの実行

①Docker Quickstart Terminal起動

②SSHでアクセス

$ docker-machine ssh default


⇒Moby Dockの絵

③下記コマンドを実行

docker@default:~$ docker run -it --rm -v /c/Users/[ユーザ名]/donichipython/:/root/donichiconpython donichi/pythonver2
[root@396d85466473 ~]# source ~/.bash_profile
[root@396d85466473 ~]# python --version
Python 3.5.2
[root@396d85466473 ~]# cd donichiconpython
[root@396d85466473 donichiconpython]# python hello.py


⇒「土日でわかるpython教室」と出力
(なお、文字コード関連のエラーが出たため、hello.pyの冒頭に「#coding:utf-8」を入れました)

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • shimizukawa

    2017/10/22 22:13

    手元のWindowsで確認してみましたが、日本語含めて表示出来ました。使用したのはWindows10, PowerShell, Docker for Win, python:3.6.1 コンテナです。その本を持っていないのでどのような環境なのか分からず、問題の再現には至りませんでした。環境の作り方について本の内容を追記すると分かるかもしれません。

    キャンセル

回答 4

checkベストアンサー

+2

以下の手順で、ほとんど同じ環境で動作することを確認しました。

Windows環境確認

PS C:\Users\taka> systeminfo.exe
ホスト名:               SHIMIZUKAWA-T46
OS 名:                  Microsoft Windows 10 Pro
OS バージョン:          10.0.16299 N/A ビルド 16299
(中略)
PS C:\Users\taka> chcp
現在のコード ページ: 932


PowerShellのコンソール文字コードは932(≒Shift JIS)です。

Dockerバージョン

PS C:\Users\taka> docker -v
Docker version 17.09.0-ce, build afdb6d4

Docker起動(イメージ名は donichi/pythonver2 でした)

PS C:\Users\taka> docker run -it --rm -v C:/Users/taka/py:/py donichi/pythonver2
[root@9c81debf3da3 ~]# source ~/.bash_profile
[root@9c81debf3da3 ~]# python --version
Python 3.5.2
[root@9c81debf3da3 ~]# cd /py
[root@9c81debf3da3 py]# cat hello.py
print("土日で分かるpython教室")

[root@9c81debf3da3 py]# file hello.py
hello.py: UTF-8 Unicode text, with CRLF line terminators
[root@9c81debf3da3 py]# python hello.py
土日で分かるpython教室


hello.pyの内容をcatで表示できること、 file コマンドでそのファイルの文字コードがUTF-8なことを確認して、恐らく書籍の期待する通りだろうことを確認しました。

最後に python hello.py で日本語コミで表示できました。


確認手順のなかに、文字コード関連のチェックをちょいちょい入れてやってみました。もし、同じチェックを行って出力が上記例と異なるようであれば、そこから「日本語が表示されない」原因が推測できるかもしれません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/23 22:32

    コメントありがとうございます。上記の確認をしましたところ、違ったところとしては2点ありました。

    ①Dockerバージョン
     17.07.0.-ce, build 8784753
    ②catコマンドの結果
     print(’python’) ←この時点で半角英数字のみの出力でした。

    キャンセル

  • 2017/10/23 23:03

    なるほど。 hello.py のファイルが print("土日で分かるpython教室") と書かれていないんですね。ディレクトリかファイルを間違えている可能性があります(本が間違えている可能性もごく僅かにあります)。 C:\Users\[ユーザ名]\donichipython\hello.py のファイルを確認したり、マウント周りを確認したりしてみてください。

    キャンセル

  • 2017/10/27 01:17

    アドバイスありがとうございます。
    その後、何度かインストールし直しなども試しております。
    マウントはできていることを確認しました。
    ディレクトリやファイルに関しても問題ないです(といっても、不勉強で「つもり」なのは重々承知ですが……)。

    現段階での日本語出力は断念し、Dockerの専門書等を踏まえて基本的なところを勉強しながら解決するしかないかなあと思っております。

    キャンセル

  • 2017/10/29 17:16

    KitematicからのWindowsPowerShellでは依然として日本語だけ出力されないのですが、DockerQuickstartTerminalからコンテナ作成、実行すると日本語の出力もできました(詳細は質問に追記しております)。
    このような場合、どのようなところを調査・検証するとよいでしょうか。

    キャンセル

  • 2017/10/30 17:32

    KitematicからのWindowsPowerShellでも確認してみましたが、日本語が表示できました。後考えられるのは、そのPowerShellのフォント設定が日本語フォントになっていない可能性でしょうか(可能性は低いと思いますが・・・)。タイトルバー右クリック -> プロパティ -> フォント で設定してみてください。私の環境ではMSゴシックになっていました。

    キャンセル

  • 2017/10/30 22:41

    突然のコメント失礼いたします。丁度私もchibaさんと同じ本を読み全く同じ状況で困っています。。

    shimizukawaさんのアドバイスにてフォントを確認しデフォルトが「ラスターフォント」だったので「MSゴシック」に変更し改善なし。プロパティ -> オプションの現在のコードページも「932 (ANSI/OEM - 日本語 Shift -JIS)という状態でした。

    宜しくお願い致します。

    キャンセル

  • キャンセル

  • 2018/05/06 14:47

    アドバイスありがとうございました。
    半年も期間が空いてしまい、不義理で申し訳ありません。
    最終的に、本書のサポートページに同様の事象についての記載があり、こちらで対処できました。
    http://www.sbcr.jp/support/14179.html
    ※上記の「質問⑨」

    当時にもサポートページ等を探したつもりだったのですが、見落としてしまっていたようです。
    shimizukawa様が紹介してくださったサイトですと、2件目の対処方法と近いのかなと思っています。

    Docker Quickstart TerminalでトライしたときもSSH接続でしたので、「SSH接続するか否か」が問題なのかなと思いました。日本語が表示できなかった明確な原因はまだよく分かっていませんが、本書におけるオフィシャルな対処方法も分かったため、いったんこのまま進めていきたいと思います。
    重ね重ねありがとうございました。

    キャンセル

  • 2018/05/06 14:52

    解決したようで良かったです。

    キャンセル

+1

PowerShellでUTF8を表示できるようにすればいいだけのはなしなんじゃ?
コマンドプロンプトでも同様で
ぐぐればすぐでてくるはなしだけど。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/06 21:37

    chcp 65001でコードページを変更するやり方のことでしょうか?
    今のところですが、
    ・KitematicでEXEC押下時にPowerShellが起動されるのでそれを利用していたのですが、ここからのコードページの変更のやり方がわからず、試せていません。
    ・PowerShell単体の場合はコードページの変更まではできるのですが、Dockerの起動でエラーとなってしまっているため(たぶんコマンドの書き方などが間違っているのだと思いますが)、プログラムの実行に至れていません。

    キャンセル

0

pythonとか日本語処理以前の問題で、
No such file or directory
ですから、あるべき場所にhello.pyが存在していないというエラーが出ています。
そのファイルをどこに作成されたのか確認してみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/22 21:54

    No such file or directory は helley.py ですね。引っ掛けですね(笑)

    キャンセル

  • 2017/10/22 21:56

    お、そうか。これはうかつでした。

    キャンセル

  • 2017/10/22 22:49

    紛らわしいエビデンスとなっておりすみません。

    キャンセル

-1

ファイルのはじめに

#coding:utf-8


を書き込まないと日本語はうまく表示されません。
つまり

#coding:utf-8
print("土日で分かるpython教室")


としなければ行けません。

もっというと、コマンドプロンプトの場合utf-8が表示されないため、そもそも日本語表示をさせるのは無理だった気がします。
要は日本語表示はmac限定ということです。
日本語は諦めるのが懸命ですね。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/22 22:15

    いいえ。 `#coding:utf-8` はPython3ではデフォルトなので、必須ではありません。また、コマンドプロンプトのエンコーディングとファイルのエンコーディングは別です。

    キャンセル

  • 2017/10/22 22:55

    コメントありがとうございます。
    shimizukawa様もご回答いただいていますが、本書ではwindowsメインで書かれており、スクリーンショットもwindowsのものなので、OSは限定されていないと思います。

    今回の目的としてはpythonの概要の把握なので、日本語出力は諦めて先に進めるというのもアリですね。

    キャンセル

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

  • Python

    12188questions

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

  • Docker

    1082questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです