kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

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用のコマンドになっている
なかなか細かいところに気が付いてる
たぶんみんな仮想環境への切り替えを忘れるんだ
そうだそうにちがいない