HFP2:配布用モジュールの作成
PythonプロフェッショナルプログラミングでFlaskを体験したところで
Head First Python 2の方にちょっと移動
こっちは5章あたりから先はFlaskでWebアプリを作りながら
いろいろ勉強していくようになっている
といっても返却期限まであと数日なのでじっくりやっている時間はない
ゴールは、「付録B Python Anywhere Webアプリケーションのデプロイ」で
インターネット上になにか載せてみるところまでとする
載せられそうな最小限のアプリができたらやってみる
たぶん、第4章で作るvsearchモジュールと、最低限のWebアプリがあれば
試すことはできる
vsearchモジュールを作る
HFP2\mymodulesフォルダを作ってファイルをみっつ
vsearch.py
def search4vowels(phrase: str) -> set:
"""phrase内の母音の集合を返す。"""
return set("aeiou").intersection(set(phrase))
def search4letters(phrase: str, letter: str = "aeiou") -> set:
"""phrase内のlettersの集合を返す。"""
return set(letters).intersection(set(phrase))
setup.py
from setuptools import setup
setup(
name="vsearch",
version="1.0",
description="The Head First Python Search Tools",
author="kb84tkhr",
author_email="kb84tkhr@example.com",
url="kb84tkhr.hatenablog.com",
py_modules=["vsearch"],
)
README.txt(空)
で配布ファイルを作成
sdistってなんだ
このへん読むのかなあ
Packaging Python Projects — Python Packaging User Guide
でもこれは宿題にして
$ py setup.py sdist
running sdist
running egg_info
:
creating dist
Creating tar archive
removing 'vsearch-1.0' (and everything under it)
distフォルダにvsearch-1.0.tar.gzというのができあがってる
Windowsだけど.zipにならないのはGit Bashからやってるからかな
ではできあがったファイルをpipでインストール・・・
そうだ、こういうときこそ仮想環境を作っておくのでは
仮想環境はHFP2フォルダに作るのかmymodulesフォルダに作るのか
たぶんHFP2全体で共通でいいと思うのでHFP2フォルダで
って作るとvscodeがここをワークスペースのフォルダにしますか、って聞いてきて
さらにmypyとかflake8が入ってないよインストールしますか、と言う
Blackも
そうかそうなるか
全部おっしゃるとおりにしたけど
vscodeが使うモジュールは外に出せないものか
というわけでvenv/Lib/site-packagesにはすでにたくさんのモジュールが
できてしまってるけど気を取り直してpip
$ cd dist
(venv)
$ py -m pip install vsearch-1.0.tar.gz
Processing d:\...\hfp2\mymodules\dist\vsearch-1.0.tar.gz
Installing collected packages: vsearch
Running setup.py install for vsearch ... done
Successfully installed vsearch-1.0
$ ls ../../venv/Lib/site-packages/
...
vsearch.py
vsearch-1.0-py3.7.egg-info
できた
これでmymodulesフォルダの外でも
$ py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import vsearch
>>>
そしてターミナルを新しく開いたらなにやら勝手に実行された
$ source d:/.../HFP2/venv/Scripts/activate
忘れずにvenv環境に切り替えてくれるってことか
しかもbash用のコマンドになっている
なかなか細かいところに気が付いてる
たぶんみんな仮想環境への切り替えを忘れるんだ
そうだそうにちがいない