pythonのrequirements.txtやPipfileにて利用しているパッケージを書いてみた
ここ2年位仕事でpythonを利用しているのですが、なんのパッケージを使っているか自分でも分からなくなってきたのでまとめてみました。
本を見たりとか独学でやっていたので割にpythonは思いのほか良く書けるので気に入っています。サンプルコードもあちこちで見られるのではかどりますね。
仕事ではpython3.6.4を利用しています。Webフレームワークを触ることは無く、スクリプト用途で使っていました。
Genderize
名前から性別を取得する機能。JamesとかEvaとかそういう名前から性別を推測してくれます。
PyYAML
yamlファイルを読んで辞書型で値を取得する機能。tomlとか色々使ってますがyamlも使ったりしてたので利用してました。
SQLAlchemy
pythonのORMモジュール。BigQueryを利用するのであまりDBアクセスをしてなかったのですが、たまたま利用する機会があったので使ってみました。
beautifulsoup4
サイトをスクレイピングするための機能。何かとお世話になっています。
boto3
AWSを仕事で利用しているのでこれを使っています。S3やSQSに接続する時に使うことが多いです。
census
米国国勢調査局のAPI用の簡単なラッパー機能。郵便番号や地域コードから人口や所得などを取得するために利用していました。
cerberus
バリデーションを作成する機能。色々とバリデーションを作りたい時に利用していました。
docopt
コマンドラインツール作成する時のインターフェース機能。引数の-hでヘルプを出したりとかオプションの引数とか設定することが出来ます。よく使っています。
freezegun
テストで日付を固定したい時に利用する機能。これを利用して日付を固定すると、日付が変わったからテストがコケるとかが無くなります。
google-api-python-client
googleのAPIを利用するための機能。googleスプレッドシートの読み書きをする時に利用しています。レポート作成するとか何かしらのデータを参照するとかが主な用途です。
google-cloud-bigquery
BigQueryを利用するための機能。どこかのタイミングでバージョンが上がって修正が大変だったので、バージョンアップはよく見ておいたほうが良いなと思いました。
google-cloud-language
googleのテキスト分析するAPIを利用するための機能。何かしらの商品のレビュー情報から感情分析とか公文分析とかしてたりしました。
google-cloud-translate
googleの翻訳APIを利用するための機能。翻訳して便利だなーと思ってみてたのですが、利用頻度を上げると結構なお値段になりそうなのであまり利用しなくなりました。
gspread
googleスプレッドシートを利用するための機能。今はgoogle-api-python-clientを使っています。
html5lib
スクレイピングする時に利用していました。htmlファイルを読むので、適当なサイトからHTMLファイルをダウンロードしてからこれを利用してスクレイピングをするテストを書くとかしていました。
httplib2
http通信をするための機能。googleのAPIで認証を取るところとかで利用しています。
jaconv
ひらがな・カタカナ・全角・半角の文字種変換する機能。日本語を扱う時の揺れを吸収したりする時に利用しています。
janome
形態素解析をする時に利用した機能。これ自体は特に利用に苦労していないのですが、利用するための辞書を作成する機能とか辞書のデータ集めに苦労しました。
lxml
スクレイピングする時に利用する機能。XMLやHTML文書をすばやく読めるということでした。
more-itertools
リストを扱う時に利用していました。flattenとかchunkedを利用することが今後もありそうです。
mysql-connector-python-rf
Pythonで書かれたMySQLドライバ。WordPressで利用していたMySQLに接続しようとした時に使ってました。
oauth2client
OAuthを利用する時に使っていましたが、今は We recommend you use google-auth and oauthlib.
と書かれているようですね。
pandas
データ分析で利用する機能。の、はずなのですが、スクレイピングしていてどうにもこうにもすごいcssとか無い男気溢れるテーブルタグが出てきた時もpandasが役に立つこともあります・・。
pipenv
パッケージ管理するツール。ココ最近はrequirements.txtであれこれパッケージを書いていたものをPipfileで管理するようになりました。
pytest
テスト用フレームワーク。 試しに使ってみたのですが、まだ入門程度に留まっています。
python-dateutil
日付や時刻を扱う機能。よく使っています。
requests
HTTPライブラリ。APIを叩く時に利用しています。
retry
再実行するデコレータ。スクレイピングなど実行時に稀にエラーになることがあるのでリトライを入れたりしています。
saklient
さくらインターネットのAPIライブラリ。サーバの状態を確認したり再起動したりする時に利用しました。
selenium
Seleniumウェブドライバ。スクレイピングする時に利用しています。
slackclient
SlackのAPIをサポートするクライアント。レポート通知とかエラー通知とか色々と使っています。
stringcase
キャメルケース、パスカルケース、ヘビケースなどの文字列の変換するための機能。foo_bar_baz
をfooBarBaz
に変えてくれたりします。
xmltodict
xmlをdict型に変更する機能。APIの戻り値がXMLだったりするものがあるのでこれを利用して変換しました。
最後に
色々と書きましたが、もっと良い機能があったら使っていきたいのと、パッケージに機能を追加したくなったりしたらpull requestだしてみようかなと思っています。
また、nodejsでも色々とnpmパッケージを使っているので同じような内容を書いてみようかなとふと思いました。