Pythonコンソールスクリプトをsetup.py
で自分のパスにインストールするには、基本的に2つの方法があります。
setup(
...
entry_points = {
'console_scripts': [
'foo = package.module:func',
],
}
)
そして
setup(
...
scripts = [
'scripts/myscript.sh'
]
)
違いは何ですか?最初のアプローチでは、スクリプトにニースの特定の名前を選択できますが、他に違いはありますか?異なる元の目的、互換性(setuptools、distutils、...?)、使用法、...?私は非常に混乱しており、ニースの詳細な返信は私(そしておそらく他の人も)がこれらすべてを適切に理解するのに役立つでしょう。
更新:私は質問をしたので PyPA 公開済み トピックに関するこれらのクールなドキュメント 。
(素晴らしい)Clickパッケージのドキュメント いくつかの理由をお勧めします スクリプトの代わりにエントリポイントを使用して、
__name__
を__main__
に割り当てさせないようにします。これにより、コードが2回インポートされる可能性があります(別のモジュールがスクリプトをインポートする場合)クリックは、entry_points
として使用するための関数を実装する良い方法です。
コマンドライン実行可能ファイルを作成するこれら2つの方法の主な違いは、setuptools
アプローチ(最初の例)では、スクリプト内で関数を呼び出す必要があることです。この場合、これはfunc
内のmodule
です。ただし、distutils
アプローチ(2番目の例)では、スクリプトを直接呼び出します(これにより、拡張子の有無にかかわらず一覧表示できます)。
セットアップツールのエントリポイントアプローチ(#1)には、 メリット があります。Windowsでは、通常のWindowsプログラムのようにダブルクリックして起動できる.exeが作成されます。これは、posixのようなシステムのbinパスにスクリプトを配置することに加えてです。
もう1つの違いは、console_scriptsを使用すると、モジュールのinitファイルが実行されたことです。スクリプトを使用するだけの場合、モジュールinitは実行されず、スクリプトのみが実行されました。