読者です 読者をやめる 読者になる 読者になる

きくらげ観察日記

好きなことを、適当に。

Python

docker + flask の環境でホスト上にポートが公開できない

問題となったコード app.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'hello world' if __name__ == '__main__': app.run() Dockerfile FROM ubuntu:xenial WORKDIR /flask ENV PYENV_ROOT /pyenv ENV PATH $PYE…

Pythonにおける弱参照

Pythonにも弱参照は存在するらしく、weakrefというモジュールで提供されています。 >>> import weakref >>> class A(object): pass ... >>> a = A() # ... (*) >>> ptr = weakref.ref(a) >>> ptr() <__main__.A object at 0x7fd47bb929b0> >>> del a ... (しばらく色々な操作をして、GCが呼ばれる</__main__.a>…

Pythonで代数的データ型とパターンマッチ

PythonでHaskellっぽい代数的データ型とパターンマッチをできるようにするためのメタクラスです。 まあこれも余り用途はなさそうですけど。 def AlgTypeMeta(*names): class _AlgTypeMeta(type): def __new__(metacls, name, bases, methods): def init(self…

Pythonでsealedクラス

とくに意味も用途もないけど何となく思いついたので作ってみました。sealedクラスとはScalaの機能で、別モジュールからの継承をできなくさせる機能です。 # sealed.py class SealedException(Exception): pass class SealedMeta(type): def __init__(self, n…

pyenvで入れたpythonでwxPythonが動かない

wxPythonで作ったGUIアプリを動かしてみようとした所、次のようなエラーが。 This program needs access to the screen. Please run with a Framework build of python, and only when you are logged in 原因は--enable-frameworkオプションをつけずにPytho…

Bing Search APIで遊ぶ

諸事情で検索機能が必要になったので、検索系のAPIの中で一番手軽に扱えそうな(とは言ってもそれほど差はありませんが)Bing Search APIを使ってみました。 APIキーの取得 まずは以下のサイトにアクセスします。 http://datamarket.azure.com/dataset/bing/se…

Pyenvとvirtualenvで環境の管理

『エキスパートPythonプログラミング』でPythonに対する知識がほぼ止まっていたのですが、どうやら最近は(かなり前から?) 「pyenv」なる便利コマンドで簡単にバージョンの切り替えを行うことができるようです。 インストール $ brew install pyenv pyenv-vir…