みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

functions-framework-pythonの名前はややこしい

functions-framework-pythonの名前がややこしいという話です.

GitHub - GoogleCloudPlatform/functions-framework-python: FaaS (Function as a service) framework for writing portable Python functions

プロジェクトの名前はfunctions-framework-pythonです.

プロジェクトのreadme.mdにはfunctions-framework --target hello --debugというサンプルのソースコードが記載されています.

これをpythonコマンドでモジュールとして起動しようとすると,そのようなモジュールは存在しないと言われます.

$ python -m functions-framework
/usr/local/bin/python: No module named functions-framework

スペースをアンダーバーに修正すれば解決します.

$ python -m functions_framework
Usage: python -m functions_framework [OPTIONS]
Try 'python -m functions_framework --help' for help.

setup.pyconsole_scriptsを見ると,いくつかのエイリアスが登録されています.

entry_points={
    "console_scripts": [
        "ff=functions_framework._cli:_cli",
        "functions-framework=functions_framework._cli:_cli",
        "functions_framework=functions_framework._cli:_cli",
        "functions-framework-python=functions_framework._cli:_cli",
        "functions_framework_python=functions_framework._cli:_cli",
    ]
}

プロジェクトのソースコードはsrc/functions_framework/というディレクトリに保存されています.

それでも,setup.pyには,name="functions-framework"と記載されています.

なお,PyPIにはfunctions-frameworkで登録されています.

functions-framework · PyPI

状況に応じてスペースとアンダーバーが異なるので注意が必要です.おそらく,Pythonの命名規則はスネークケースを使用しますが,プロジェクト名はケバブケースにしたのが原因なのだと思います.