<?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>Python | エス・プロ</title>
	<atom:link href="https://s-pro4.com/cat/web/python/feed" rel="self" type="application/rss+xml" />
	<link>https://s-pro4.com</link>
	<description>パソコンとシステムの活用を考えます</description>
	<lastBuildDate>Sat, 22 Feb 2025 11:34:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://s-pro4.com/wp-content/uploads/2021/10/bb4c6ee1587184e454cc308581390f8d-150x150.png</url>
	<title>Python | エス・プロ</title>
	<link>https://s-pro4.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MacにAnacondaをインストールする</title>
		<link>https://s-pro4.com/page-904.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 13:11:01 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=904</guid>

					<description><![CDATA[Python、Flask関係で過去に記事を書いた。 Macへpythonをインストールする、そしてMAMPでWeb表示MacにPythonのフレームワーク Flaskをインストールする。 それぞれある程度の目的は達したも [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Python、Flask関係で過去に記事を書いた。</p>



<p><a href="https://s-pro4.com/page-698.html" data-type="post" data-id="698">Macへpythonをインストールする、そしてMAMPでWeb表示</a><br><a href="https://s-pro4.com/page-726.html" data-type="post" data-id="726">MacにPythonのフレームワーク Flaskをインストールする。</a></p>



<p>それぞれある程度の目的は達したものの、仮想環境を作成するにはAnacondaでも良かったのでは？<br>ということで、Windowsでは使ってたAnacondaをMacにも入れてみた。</p>



<p>まずはダウンロードする。<br><a href="https://www.anaconda.com/download/">https://www.anaconda.</a><a href="https://www.anaconda.com/download/" target="_blank" rel="noreferrer noopener">com</a><a href="https://www.anaconda.com/download/">/download/</a></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="600" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda-1024x600.jpg" alt="" class="wp-image-905" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda-1024x600.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda-300x176.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda-768x450.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda.jpg 1436w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="619" height="441" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda2.jpg" alt="" class="wp-image-906" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda2.jpg 619w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda2-300x214.jpg 300w" sizes="(max-width: 619px) 100vw, 619px" /></figure>



<p>インストーラーから特に問題なくインストールを進める。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="308" height="241" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda3.jpg" alt="" class="wp-image-907" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda3.jpg 308w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda3-300x235.jpg 300w" sizes="(max-width: 308px) 100vw, 308px" /></figure>



<p>アプリケーションフォルダにAnaconda-Navigator.app（のエイリアス）が追加される。<br>実体は /opt/anaconda3 下だった。</p>



<p>ナビゲータを起動する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="847" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1024x847.jpg" alt="" class="wp-image-908" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1024x847.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-300x248.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-768x635.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1536x1271.jpg 1536w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4.jpg 1692w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Windowsで見ていた画面とほぼ変わらない。</p>



<p>Environmentsから仮想環境を作成する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="783" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-1024x783.jpg" alt="" class="wp-image-909" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-1024x783.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-300x229.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-768x587.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.jpg 1355w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>flask_workという名前で作成した結果。</p>



<p>次に、flaskをインストールするためにターミナルを起動する。仮想環境名横の矢印をクリックして、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="468" height="134" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2.jpg" alt="" class="wp-image-910" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2.jpg 468w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2-300x86.jpg 300w" sizes="(max-width: 468px) 100vw, 468px" /></figure>



<p>Open Terminalを選択する。<br>そうすると、Macのターミナルが起動する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="436" height="92" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda6.jpg" alt="" class="wp-image-911" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda6.jpg 436w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda6-300x63.jpg 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure>



<p>プロンプトの先頭が「(仮想環境名)」になっていることを確認しつつ、pip list でインストールされたPythonライブラリを確認。デフォルトではほぼ何も入っていないようだ。</p>



<p>pip install flask でflaskをインストールする。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="432" height="200" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda7.jpg" alt="" class="wp-image-912" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda7.jpg 432w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda7-300x139.jpg 300w" sizes="(max-width: 432px) 100vw, 432px" /></figure>



<p>結果、依存関係を考慮され関係するライブラリを含めて Flask 3.1.0がインストールされた。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="988" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-1024x988.jpg" alt="" class="wp-image-913" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-1024x988.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-300x289.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-768x741.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8.jpg 1435w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Anaconda Navigator上でも、再読み込みした後に、flaskがインストールされたことが確認できた。</p>



<p>さて、インストールフォルダを確認してみると、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="82" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda9.jpg" alt="" class="wp-image-914" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda9.jpg 426w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda9-300x58.jpg 300w" sizes="(max-width: 426px) 100vw, 426px" /></figure>



<p>/opt/anaconda3/envs 以下に作成した仮想環境名のフォルダができていることがわかる。</p>



<p>環境構築ばかりやって、開発になかなか手をつけずにいる。</p>



<p>2025.2.22追記<br>Anacondaインストール後に、homeに.bash_profileが生成され、内容が下記となった。</p>



<pre class="wp-block-code"><code>
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if &#091; $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if &#091; -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# &lt;&lt;&lt; conda initialize &lt;&lt;&lt;
</code></pre>



<p>デフォルトでanaconda設定が読み込まれ、プロンプトが変わってしまう。<br>ここは要注意。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MacにPythonのフレームワーク Flaskをインストールする。</title>
		<link>https://s-pro4.com/page-726.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sun, 23 Jun 2024 15:44:55 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=726</guid>

					<description><![CDATA[参考ページhttps://qiita.com/outsider-kithy/items/9b706a2092538474e5e6 ほぼ、参考ページの通りに実施でインストールとWebページでの表示確認ができた。 プロジェク [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>参考ページ<br><a href="https://qiita.com/outsider-kithy/items/9b706a2092538474e5e6" target="_blank" rel="noreferrer noopener">https://qiita.com/outsider-kithy/items/9b706a2092538474e5e6</a></p>



<p>ほぼ、参考ページの通りに実施でインストールとWebページでの表示確認ができた。</p>



<p>プロジェクト用にディレクトリ作成<br>mkdir test<br>cd test</p>



<p>仮想環境venvを作成<br>python3 -m venv venv</p>



<p>仮想環境の設定ファイルを読み込み<br>source venv/bin/activate</p>



<p>ここまで実施すると、プロンプトの頭に (venv) と付く。<br>元のプロンプトが<br>&lt;hostname&gt; $<br>だとすると<br>(venv) &lt;hostname&gt; $<br>のような感じ。</p>



<p>仮想環境下でflaskをインストールする。<br>(venv) $ pip install flask</p>



<p>パッケージ一覧<br>(venv) $ pip list</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="153" height="160" src="https://s-pro4.com/wp-content/uploads/2024/06/flask3.jpg" alt="" class="wp-image-727"/></figure>



<p>ここで、おやっと思う。Flaskをインストールする前に、Pythonはインストールしていたわけで、そのときの pip list と結果が違ったので。</p>



<p>ここでコマンドのパスを確認<br>(venv) $ which pip<br>&lt;パス&gt;/test/venv/bin/pip</p>



<p>(venv) $ which python<br>&lt;パス&gt;/test/venv/bin/python</p>



<p>(venv) $ python --version<br>Python 3.12.4</p>



<p>ということで、Flaskをインストールしたら仮想環境のディレクトリ下にpython もインストールされるということらしい。<br>この前までに、Macにpythonを単独でインストールしてきたが、Flaskを使う前提ならば必要なかったのかもしれない。</p>



<p>アプリケーションファイルを test.py として下記の内容で作成する。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>import sys

from flask import Flask,request

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello, World"

if __name__=="__main__":
    app.run()
</code></pre>



<p>環境設定用のドットファイルと使えるようパッケージをインストールする。<br>(venv) $ pip install python-dotenv</p>



<p>testディレクトリ下に .envを作成し、下記の環境変数を定義する。<br>FLASK_APP=test.py<br>FLASK_DEBUG=1<br></p>



<p>※2024.7.2訂正<br>※デバッグモードの設定に下記を使うのは、flask 2.2までとのこと。<br>FLASK_ENV=development</p>



<p>アプリケーションを実行<br>(venv) $ flask run</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="851" height="123" src="https://s-pro4.com/wp-content/uploads/2024/06/flask.jpg" alt="" class="wp-image-729" srcset="https://s-pro4.com/wp-content/uploads/2024/06/flask.jpg 851w, https://s-pro4.com/wp-content/uploads/2024/06/flask-300x43.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/06/flask-768x111.jpg 768w" sizes="(max-width: 851px) 100vw, 851px" /></figure>



<p>http://127.0.0.1:5000<br>へアクセスできるということで。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="394" height="92" src="https://s-pro4.com/wp-content/uploads/2024/06/flask2.jpg" alt="" class="wp-image-730" srcset="https://s-pro4.com/wp-content/uploads/2024/06/flask2.jpg 394w, https://s-pro4.com/wp-content/uploads/2024/06/flask2-300x70.jpg 300w" sizes="(max-width: 394px) 100vw, 394px" /></figure>



<p>結局のところ、Flaskをインストールすると Webサービスもインストールされるということか。Flaskはフレームワークであり開発環境であるということかな。<br>Pythonだけではなく、MAMPもインストールは要らなかったかも。</p>



<p>コードの意味をまだ理解していない。まだまだ先は長い。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MAMPでPython3を使用する</title>
		<link>https://s-pro4.com/page-719.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sat, 22 Jun 2024 18:26:48 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=719</guid>

					<description><![CDATA[MAMPとPythonに苦戦中。 前回の記事で、MAMPのphthonを使った方が良さそうと書いた。コードの先頭行は#!/usr/bin/env python3ではなく、#!/usr/bin/env /Applicati [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MAMPとPythonに苦戦中。</p>



<p>前回の記事で、MAMPのphthonを使った方が良さそうと書いた。<br>コードの先頭行は<br>#!/usr/bin/env python3<br>ではなく、<br>#!/usr/bin/env /Applications/MAMP/Library/bin/python<br>にした方が良いと。<br>MAMPに同梱された /Applications/MAMP/Library/bin/python はバージョン 2.7だった。</p>



<p>#!/usr/bin/env /Users/ユーザ名/.pyenv/shims/python3<br>として、Pythonバージョン3を使うために、チャレンジする。<br>MAMPが示すコード例(Examples)は下記。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>import mysql.connector

config = {
  'user': 'root',
  'password': 'root',
  'host': 'localhost',
  'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
  'database': 'test',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)

cursor = cnx.cursor(dictionary=True)

cursor.execute('SELECT `id`, `name` FROM `test`')

results = cursor.fetchall()

for row in results:
  id = row&#091;'id']
  title = row&#091;'name']
  print '%s | %s' % (id, title)

cnx.close()</code></pre>



<p>テーブル名は test ではなく table1として作成しているのでそこは変えるとして、printの行で SyntaxError: invalid syntax: が出た。</p>



<p>Pythonバージョン2では、<br>print "Hello"<br>で良かったものが、Pythonバージョン3では、カッコをつけないとダメになったようだ。<br>print("Hello")</p>



<p>よって、コードを書き換えることで、このエラーは消えた。<br>print '%s | %s' % (id, title)<br>↓<br>print('%s | %s' % (id, title))</p>



<p></p>



<p>次のエラーは<br>import mysql.connector: /Applications/MAMP/htdocs/mysql_brew.py<br>ModuleNotFoundError: No module named 'mysql': /Applications/MAMP/htdocs/mysql_brew.py</p>



<p>ライブラリのmysqlがないと思われる。</p>



<p>$ pip3 list<br>で、インストール済みのパッケージ一覧を確認。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="220" height="360" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1.jpg" alt="" class="wp-image-721" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1.jpg 220w, https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1-183x300.jpg 183w" sizes="(max-width: 220px) 100vw, 220px" /></figure>



<p>pipはPythonのパッケージ管理ソフトらしい。</p>



<p>$ pip3 search mysql<br>で検索を試みるが、<br>RuntimeError: PyPI no longer supports 'pip search' (or XML-RPC search). Please use https://pypi.org/search (via a browser) instead.</p>



<p>searchは使えないんですって。</p>



<p>https://pypi.org/search で検索。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-3-1024x665.jpg" alt="" class="wp-image-723" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-3-1024x665.jpg 1024w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3-300x195.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3-768x499.jpg 768w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3.jpg 1206w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>たくさん出てきてどれかわからないが、入れてみる</p>



<p>$ pip3 install mysql-connector</p>



<p>エラーがなくなった。</p>



<p>なんとか、MAMPでPython3が使えるようになった。</p>



<p>ちなみに、コード内でPythonバージョンを表示する方法は、</p>



<pre class="wp-block-code"><code>import sys

print("Content-Type: text/html\n\n")

print(sys.version)
print("&lt;br>")</code></pre>



<p></p>



<p>そして、前回出ていたレコード内に日本語が混じっていたときのエラー UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx は出なくなった。Python バージョン3では解消したようだ。<br>ただし、文字コードをきちんとしないとブラウザ上では文字化けしたため、ちゃんとhtmlにしてみた。<br>最終的には、下記のコードとした。Hello Worldは関係ないけど。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>#!/usr/bin/env /Users/ユーザ名/.pyenv/shims/python3

import sys

print("Content-Type: text/html\n\n")

print("&lt;html>")
print("&lt;head>")
print("&lt;meta charset=\"utf-8\">")
print("&lt;title>Hello World&lt;/title>")
print("&lt;/head>")
print("&lt;body>")
print("&lt;h1>Hello World!&lt;/h1>")

print(sys.version)
print("&lt;br>")

import mysql.connector

config = {
  'user': 'root',
  'password': 'root',
  'host': 'localhost',
  'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
  'database': 'test',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)

cursor = cnx.cursor(dictionary=True)

cursor.execute('SELECT `id`, `name` FROM `table1`')

results = cursor.fetchall()

for row in results:
  id = row&#091;'id']
  title = row&#091;'name']
  print('%s | %s' % (id, title))

cnx.close()

print("&lt;/body>")
print("&lt;/html>")
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="588" height="139" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-4.jpg" alt="" class="wp-image-724" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-4.jpg 588w, https://s-pro4.com/wp-content/uploads/2024/06/python3-4-300x71.jpg 300w" sizes="(max-width: 588px) 100vw, 588px" /></figure>



<p>まだまだ、色々と問題がありそうだなー。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MAMPでMySQLへ接続する</title>
		<link>https://s-pro4.com/page-709.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sat, 22 Jun 2024 09:20:11 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=709</guid>

					<description><![CDATA[Pythonでデータベースアクセスをしようと、MacにMAMPを入れたり、Pythonを入れたりしている。 まずはMAMPのスタートページみたいなものへアクセスする。 WebStartをクリックする。 URLは http [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Pythonでデータベースアクセスをしようと、MacにMAMPを入れたり、Pythonを入れたりしている。</p>



<p>まずはMAMPのスタートページみたいなものへアクセスする。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="532" height="431" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql-1.jpg" alt="" class="wp-image-711" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql-1.jpg 532w, https://s-pro4.com/wp-content/uploads/2024/06/mysql-1-300x243.jpg 300w" sizes="(max-width: 532px) 100vw, 532px" /></figure>



<p>WebStartをクリックする。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="701" height="1024" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql2-701x1024.jpg" alt="" class="wp-image-712" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql2-701x1024.jpg 701w, https://s-pro4.com/wp-content/uploads/2024/06/mysql2-205x300.jpg 205w, https://s-pro4.com/wp-content/uploads/2024/06/mysql2-768x1123.jpg 768w, https://s-pro4.com/wp-content/uploads/2024/06/mysql2-1051x1536.jpg 1051w, https://s-pro4.com/wp-content/uploads/2024/06/mysql2.jpg 1139w" sizes="(max-width: 701px) 100vw, 701px" /></figure>



<p>URLは http://localhost/MAMP/?language=English で、<br>phpinfo()や、MySQLの設定情報が得られる。</p>



<p>さっそく接続してみる。</p>



<pre class="wp-block-code"><code>mysql -h localhost -u root -p -P 3306
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)</code></pre>



<p>エラー出た。</p>



<p>Socketが 設定情報に書いてあるパスと違う？</p>



<pre class="wp-block-code"><code>which mysql<br>/opt/homebrew/opt/mysql-client/bin/mysql</code></pre>



<p>MAMPじゃない方のmysqlを実行していたようだ。</p>



<p>MAMPの方のmysqlを実行するため、<br>cd /Applications/MAMP/Library/bin してから、./mysql で実行するとOKだった。</p>



<pre class="wp-block-code"><code>/Applications/MAMP/Library/bin $ ./mysql -h localhost -u root -p -P 3306<br>Enter password:<br>Welcome to the MySQL monitor. Commands end with ; or \g.<br>Your MySQL connection id is 572<br>Server version: 5.7.39 MySQL Community Server (GPL)<br><br>Copyright (c) 2000, 2022, Oracle and/or its affiliates.<br><br>Oracle is a registered trademark of Oracle Corporation and/or its<br>affiliates. Other names may be trademarks of their respective<br>owners.<br><br>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br><br>mysql></code></pre>



<p>コマンドラインで、データベース一覧表示、データベース作成、データベース選択、テーブル作成、テーブル一覧表示、テーブルのカラム表示まで一気にやってみる。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="464" height="613" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql3.jpg" alt="" class="wp-image-713" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql3.jpg 464w, https://s-pro4.com/wp-content/uploads/2024/06/mysql3-227x300.jpg 227w" sizes="(max-width: 464px) 100vw, 464px" /></figure>



<p>途中一度間違えて、PostgreSQLのクセで \d を打ってしまった。</p>



<p>次にデータ挿入と表示をしてみるが問題なし。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="412" height="187" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql6.jpg" alt="" class="wp-image-716" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql6.jpg 412w, https://s-pro4.com/wp-content/uploads/2024/06/mysql6-300x136.jpg 300w" sizes="(max-width: 412px) 100vw, 412px" /></figure>



<p>今度はコマンドラインではなく、Webアプリとしてphpで接続してみる。<br>Examplesのコードのままで問題なく接続できた。</p>



<p>「Connect using an UNIX socket (preferred)」の例で接続したとき。<br>こちらは、ホストを localhostにしてある。</p>



<figure class="wp-block-image size-full" id="wp-block-themeisle-blocks-image-fae4eeed"><img loading="lazy" decoding="async" width="428" height="81" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql4.jpg" alt="" class="wp-image-714" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql4.jpg 428w, https://s-pro4.com/wp-content/uploads/2024/06/mysql4-300x57.jpg 300w" sizes="(max-width: 428px) 100vw, 428px" /></figure>



<p>「Connect via network」の例で接続したとき。<br>こちらは、ホストを127.0.0.1かつ、ポート番号を指定してある。</p>



<figure class="wp-block-image size-full" id="wp-block-themeisle-blocks-image-c94a7c67"><img loading="lazy" decoding="async" width="434" height="87" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql5.jpg" alt="" class="wp-image-715" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql5.jpg 434w, https://s-pro4.com/wp-content/uploads/2024/06/mysql5-300x60.jpg 300w" sizes="(max-width: 434px) 100vw, 434px" /></figure>



<p>違いは今ひとつわからないが。preferredとオススメされているので、localhostを使った方が良いのかな。</p>



<p></p>



<p>次はWebアプリとしてPythonで接続してみる。<br>Exampleのコードでほぼ行けるのだが、いくつかいじったせいでエラーなどで困った。</p>



<p><br>まずは、先頭が #!/usr/bin/env python3 ではだめだった。まぁライブラリを入れたりすればできなくは無いのだろうけど、MAMPのphthonを使った方が良さそうだ。pyenv でせっかくインストールしたんだけど、下記に変えておく。<br>#!/usr/bin/env /Applications/MAMP/Library/bin/python</p>



<p>次に引っかかったのは、インデントでのタブとスペースの混在。phpだとifでもなんでも { } で囲みたいところ、Pythonではインデントで範囲指定をしなければならないとのこと。<br>まぁ、それも修正。</p>



<p>テーブルから値を取り出して print する部分でApacheでエラー<br>AH01215: UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-5: ordinal not in range(128): /Applications/MAMP/htdocs/mysql_test.py</p>



<p>ちなみにログは  tail -30 -f /Applications/MAMP/logs/apache_error.log で確認</p>



<p>ascii以外の文字が入っているとか。プログラムでのあるあるではあるが、コードに不審な文字はない。どうやら、テーブルのレコードの中身に"名前"という日本語があり、それが駄目らしい。<br>一旦、updateで中身をasciiだけにする。</p>



<p>UPDATE table1 SET name='namae' WHERE id=1;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="374" height="165" src="https://s-pro4.com/wp-content/uploads/2024/06/mysql7.jpg" alt="" class="wp-image-717" srcset="https://s-pro4.com/wp-content/uploads/2024/06/mysql7.jpg 374w, https://s-pro4.com/wp-content/uploads/2024/06/mysql7-300x132.jpg 300w" sizes="(max-width: 374px) 100vw, 374px" /></figure>



<p>これで、エラー(Apache）が変わり、<br>malformed header from script 'mysql_test.py': Bad header: 1 | namae</p>



<p>Header出力する前に、printするなということでしょうか。<br>レコード内容のprintより前に、<br>print "Content-Type: text/html\n\n"<br>しておく。</p>



<p>これで、「一応」MySQLへ接続し、テーブルの中身を表示できた。</p>



<p>UnicodeEncodeError についてはまた後日。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Macへpythonをインストールする、そしてMAMPでWeb表示</title>
		<link>https://s-pro4.com/page-698.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Wed, 19 Jun 2024 19:26:57 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=698</guid>

					<description><![CDATA[参考サイト）https://prog-8.com/docs/python-env Homebrewはインストール済みなので、 pyenvのインストールから。 結構長くかかったかな。5分以上10分以内。 次に、インストール [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>参考サイト）<br><a href="https://prog-8.com/docs/python-env" target="_blank" rel="noreferrer noopener">https://prog-8.com/docs/python-env</a></p>



<p>Homebrewはインストール済みなので、</p>



<pre class="wp-block-code"><code>$ brew -v<br>Homebrew 4.3.6</code></pre>



<p>pyenvのインストールから。</p>



<pre class="wp-block-code"><code>brew install pyenv</code></pre>



<p>結構長くかかったかな。5分以上10分以内。</p>



<pre class="wp-block-code"><code>$ pyenv -v<br>pyenv 2.4.3</code></pre>



<p>次に、インストール可能なPythonバージョンを確認する。</p>



<pre class="wp-block-code"><code>pyenv install --list</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="185" height="246" src="https://s-pro4.com/wp-content/uploads/2024/06/python.jpg" alt="" class="wp-image-699"/></figure>



<p>開発版ではない最新の3.12.4をインストールしてみる。</p>



<pre class="wp-block-code"><code>pyenv install 3.12.4</code></pre>



<p>完了したら、pyenv versions</p>



<pre class="wp-block-code"><code>$ pyenv versions
* system (set by /Users/ユーザ名/.pyenv/version)
  3.12.4</code></pre>



<p>この状態で、which pythonでは何も出ない。</p>



<p>.bashrcに下記を追加し、sourceを実行する。</p>



<p>eval "$(pyenv init -)"</p>



<p>source ~/.bashrc</p>



<p>もう一度whichすると、~/.pyenv/shims/python が参照できる。</p>



<pre class="wp-block-code"><code>$ which python
/Users/ユーザ名/.pyenv/shims/python</code></pre>



<pre class="wp-block-code"><code>$ python --version<br>Python 3.12.4</code></pre>



<p>これでインストールOK。</p>



<p>Hello Worldを表示</p>



<pre class="wp-block-code"><code>#!/usr/bin/env python

print("Hello World!")</code></pre>



<p>hello.py などと名前をつけて保存。<br>chmodで実行権限を与えて、実行する。</p>



<p></p>



<p>この後、MAMPへ実装する。</p>



<p>まずは、<br>/Applications/MAMP/htdocs<br>へファイルを設置して、Webアクセスしてみる。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="385" height="271" src="https://s-pro4.com/wp-content/uploads/2024/06/python2.jpg" alt="" class="wp-image-702" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python2.jpg 385w, https://s-pro4.com/wp-content/uploads/2024/06/python2-300x211.jpg 300w" sizes="(max-width: 385px) 100vw, 385px" /></figure>



<p>内容はhtmlっぽく書き換えてみたが、ソースコードがそのまま表示されてしまった。<br>CGIとして動作をしていないということですね。</p>



<p>AddHandler cgi-script .py<br>を追加する。</p>



<pre class="wp-block-code"><code>&lt;Directory "/Applications/MAMP/htdocs">
...
AddHandler cgi-script .py</code></pre>



<p>そうすると、<br>Forbidden<br>You don't have permission to access this resource.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="379" height="150" src="https://s-pro4.com/wp-content/uploads/2024/06/python3.jpg" alt="" class="wp-image-703" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3.jpg 379w, https://s-pro4.com/wp-content/uploads/2024/06/python3-300x119.jpg 300w" sizes="(max-width: 379px) 100vw, 379px" /></figure>



<p>Apacheの設定を色々と忘れてしまっている。</p>



<p><br>+ExecCGI を追加する。</p>



<pre class="wp-block-code"><code>&lt;Directory "/Applications/MAMP/htdocs">
...
Options -Indexes +ExecCGI
AddHandler cgi-script .py</code></pre>



<p>次は、Internal Server Error<br>The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator at you@example.com to inform them of the time this error occurred, and the actions you performed just before this error.<br>More information about this error may be available in the server error log.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="218" src="https://s-pro4.com/wp-content/uploads/2024/06/python4-1024x218.jpg" alt="" class="wp-image-704" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python4-1024x218.jpg 1024w, https://s-pro4.com/wp-content/uploads/2024/06/python4-300x64.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/06/python4-768x163.jpg 768w, https://s-pro4.com/wp-content/uploads/2024/06/python4.jpg 1049w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これは、単純にパーミッションを忘れていたようで、<br>chmod 755 test.py を実行しておく。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="389" height="110" src="https://s-pro4.com/wp-content/uploads/2024/06/python5-1.jpg" alt="" class="wp-image-706" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python5-1.jpg 389w, https://s-pro4.com/wp-content/uploads/2024/06/python5-1-300x85.jpg 300w" sizes="(max-width: 389px) 100vw, 389px" /></figure>



<p>正常動作を確認。</p>



<p>設定を変えていく中で、MAMPを何度か再起動するとポートが8888に戻ってしまうことがあった。</p>



<p>MAMPのデフォルトポートを変えてはいけない理由はこれなのかな。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
