<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>初心者向け - プログラミングで遊ブログ</title>
	<atom:link href="https://lemon818.com/tag/%e5%88%9d%e5%bf%83%e8%80%85%e5%90%91%e3%81%91/feed/" rel="self" type="application/rss+xml" />
	<link>https://lemon818.com</link>
	<description>現役システムエンジニアが趣味でプログラミングする自由気ままなブログ</description>
	<lastBuildDate>Sun, 02 Aug 2020 12:51:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>	<item>
		<title>【Python】コンパイル &#038; exe 化してみる！悩んだ点も解説（初心者向け）</title>
		<link>https://lemon818.com/python-compiler/</link>
		
		<dc:creator><![CDATA[Take]]></dc:creator>
		<pubDate>Sat, 25 Jul 2020 23:41:10 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[exe 化]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[コンパイル]]></category>
		<category><![CDATA[初心者向け]]></category>
		<guid isPermaLink="false">https://lemon818.com/?p=5043</guid>

					<description><![CDATA[「自作の Python ファイルを exeファイルにして簡単に実行したい！！！」 &#160; そんな思いからこの記事は作成されました。どーもTakeです。 この記事ではPythonで自作の py ファイルを exec …]]></description>
										<content:encoded><![CDATA[<p>「<strong>自作の Python ファイルを exeファイルにして簡単に実行したい！！！</strong>」</p>
<p>&nbsp;</p>
<p>そんな思いからこの記事は作成されました。どーもTakeです。</p>
<p>この記事ではPythonで自作の py ファイルを<strong> exec ファイル</strong>にする方法について簡単に解説します。</p>
<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/compiler.png" alt="" width="605" height="319" class="aligncenter wp-image-5048" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/compiler.png 620w, https://lemon818.com/wp/wp-content/uploads/2020/07/compiler-300x158.png 300w" sizes="(max-width: 605px) 100vw, 605px" /></p>
<p>&nbsp;</p>
<p>Python ファイルを exe 化するには、Python ファイルを一度<strong>コンパイルする必要</strong>があります。</p>
<p>※ コンパイル・・・コンピュータが実行可能な形式（機械語）に変換する処理のこと</p>
<p>&nbsp;</p>
<p>Python ファイルをコンパイルしたいだけなら、</p>
<p>コマンドラインに「python -m compileall &lt;ファイル名&gt;」と入力すれば、コンパイル可能です。</p>
<p>&nbsp;</p>
<p>しかし<span style="color: #0000ff;"><strong>「exe」ファイルを作りたい</strong></span>場合は、「pyinstaller」モジュールをインポートし、</p>
<p>そのモジュールから「pyinstaller &lt;ファイル名&gt; --onefile」とコマンド実行する必要があります。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">コンパイルする方法</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>python -m compileall &lt;ファイル名&gt; ・・・ Python標準ライブラリ、「exe」ファイルはできません。代わりに「pyc」ファイルができます。</li>
<li>pyinstaller &lt;ファイル名&gt; --onefile ・・・「pip」でインストールする必要あり、「exe」ファイル作成できます！</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>この記事では、「compileall 」と「pyinstaller 」の二つの手法について簡単に解説します。</p>
<p>またそれに加え、私がコンパイルさせるときにうまくいかなかった点についても解説します。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block red">
<div class="sc_frame_title">うまくいかなかった点</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid red">
<ol>
<li>実行した画面がぱっと出てぱっと消える！</li>
<li>日本語を含むソースファイルだとうまくコンパイルできない！</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h2>標準ライブラリ「compileall 」でコンパイル</h2>
<p>まず下記の「tmp.py」ファイルをコンパイルしたいと思います。</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp1.png" alt="" width="475" height="229" class="aligncenter wp-image-5050" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp1.png 491w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp1-300x144.png 300w" sizes="(max-width: 475px) 100vw, 475px" /></p>
<p>「tmp.py」ファイルの中身は下記になります。</p><pre class="crayon-plain-tag">print("Hello World")
input("入力待ち")</pre><p>
&nbsp;</p>
<p>ただ「Hello World」と表示させるだけのファイルです。</p>
<p>あとはPython を実行するコマンドラインに下記を入力すればOKです。</p><pre class="crayon-plain-tag">python -m compileall tmp.py</pre><p>
&nbsp;</p>
<p>これだけです。「tmp.py」ファイルが置かれているフォルダ（ディレクトリ）をご確認ください。</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp2.png" alt="" width="450" height="178" class="aligncenter wp-image-5051" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp2.png 437w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp2-300x118.png 300w" sizes="(max-width: 450px) 100vw, 450px" /></p>
<p>「__pycache__」というフォルダが作成されますので、その中を確認します。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp3.png" alt="" width="476" height="198" class="aligncenter wp-image-5052" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp3.png 456w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp3-300x125.png 300w" sizes="auto, (max-width: 476px) 100vw, 476px" /></p>
<p>&nbsp;</p>
<p>「tmp.cpython-37.pyc」が作成されますので、それをダブルクリックします。</p>
<p>すると下記のように「tmp.py」ファイルが実行されます。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png" alt="" width="721" height="378" class="aligncenter wp-image-5053" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png 979w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-300x157.png 300w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-768x402.png 768w" sizes="auto, (max-width: 721px) 100vw, 721px" /></p>
<p>&nbsp;</p>
<p>これだけです。</p>
<p>「tmp.cpython-37.pyc」でいいよ～って人はこのやり方でOKだと思います。</p>
<p>ですが、どうしても「exe」化したい！という人は次の方法をご確認ください。</p>
<p>&nbsp;</p>
<h2>「pyinstaller」をインストールして exe ファイルをつくる</h2>
<p>先程と同様に下記の「tmp.py」ファイルをコンパイルしたいと思います。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp1.png" alt="" width="527" height="254" class="aligncenter wp-image-5050" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp1.png 491w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp1-300x144.png 300w" sizes="auto, (max-width: 527px) 100vw, 527px" /></p>
<p>まずは「pyinstaller 」をインストールする必要があります。</p>
<p>下記コマンドを実行してください。</p><pre class="crayon-plain-tag">pip install pyinstaller</pre><p>
&nbsp;</p>
<p>インストールが完了すれば、下記コマンドを実行します。</p><pre class="crayon-plain-tag">pyinstaller tmp.py --onefile</pre><p>
&nbsp;</p>
<p>すると下記のようなファイルとフォルダが作成されます。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp5.png" alt="" width="470" height="233" class="aligncenter wp-image-5057" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp5.png 449w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp5-300x148.png 300w" sizes="auto, (max-width: 470px) 100vw, 470px" /></p>
<p>&nbsp;</p>
<p>「dist」フォルダ下に「tmp.exe」ファイルが作成されていることが確認できます。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp6.png" alt="" width="475" height="211" class="aligncenter wp-image-5058" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp6.png 437w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp6-300x133.png 300w" sizes="auto, (max-width: 475px) 100vw, 475px" /></p>
<p>「tmp.exe」をダブルクリックし、処理が実行されることを確認できます。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png" alt="" width="678" height="355" class="aligncenter wp-image-5053" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png 979w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-300x157.png 300w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-768x402.png 768w" sizes="auto, (max-width: 678px) 100vw, 678px" /></p>
<p>&nbsp;</p>
<h2>実行した画面がぱっと出てぱっと消える！</h2>
<p>ダブルクリックして実行したら下の画面が<strong>夏の花火のように<span style="color: #ff0000;">ぱっと出てぱっと消える！</span></strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png" alt="" width="758" height="397" class="aligncenter wp-image-5053" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp4.png 979w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-300x157.png 300w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp4-768x402.png 768w" sizes="auto, (max-width: 758px) 100vw, 758px" /></p>
<p>&nbsp;</p>
<p>そんな人いませんか？</p>
<p>これはコンパイルしたファイルは実行されているんですが、<span style="color: #ff0000;"><strong>実行が終わると画面がすぐに閉じるから</strong></span>です。</p>
<p>もしこの画面を確認したい場合は、ソースコード内で<span style="color: #0000ff;"><strong>処理を</strong><strong>待機させるコードを追加する必要があります。</strong></span></p>
<p>&nbsp;</p>
<p>下記は先程例にあげました「tmp.py」ファイルのソースコードです。</p><pre class="crayon-plain-tag">print("Hello World")
input("入力待ち")</pre><p>
&nbsp;</p>
<p>ここに「input」という記述があります。</p>
<p>「input」はキーボード入力を待つ処理のことで、<strong>わざと</strong>入れています。</p>
<p>&nbsp;</p>
<p>こうすることで<strong>画面が消えず</strong>キーボード入力が完了するまで処理を待つようにしてくれます。</p>
<p>&nbsp;</p>
<h2>日本語を含むソースファイルだとうまくコンパイルできない！</h2>
<p>コンパイルしようとしたときにこんな感じのエラーがでてきました。</p><pre class="crayon-plain-tag">File "c:\users\XXXXX\anaconda3\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 29: invalid start byte</pre><p>
&nbsp;</p>
<p>エラーを見る限り、<span style="color: #ff0000;"><strong>文字コードがいけてない感じ</strong></span>。。。</p>
<p>そんなときは下記のように <span style="color: #0000ff;"><strong>Python ファイルの文字コードを「UTF-8」に変更して再度実行すればOK</strong></span>です。</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/comp7.png" alt="" width="596" height="572" class="aligncenter wp-image-5062" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/comp7.png 649w, https://lemon818.com/wp/wp-content/uploads/2020/07/comp7-300x288.png 300w" sizes="auto, (max-width: 596px) 100vw, 596px" /></p>
<p>&nbsp;</p>
<p>私の場合、Python ファイルの文字コードが「SJIS」だったので、</p>
<p>それを「UTF-8」に変更したらうまくコンパイルできました！</p>
<p>&nbsp;</p>
<h2>最後に</h2>
<p>いかがでしたでしょうか？</p>
<p>この記事では、Pythonで自作の py ファイルを<strong> exec ファイル</strong>にする方法についてを解説しました。</p>
<p>&nbsp;</p>
<p>この記事が開発のお役に立てれば幸いです。</p>
<p>ではでは。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
