scripts
配布用に Python でパッケージを作成していて、 ofで実行可能ファイルと見なされるスクリプトをいくつか入れた場合setup.py
、それらに *.py 拡張子を付けないようにする標準的な方法はありますか? .py 拡張子を持たないファイルを作成するだけで十分ですか、それとも何か余分に必要ですか? ファイル名から .py を削除すると、setup.py
/distutils などの Python ツールに関連する機能が壊れますか? ありがとう。
3 に答える
拡張子は、.py
モデル AFAICT をインポートする場合にのみ必要です。、、などは、先頭にシバンが付いた単純な実行可能ファイルであることを忘れないでくださいpip
。easy_install
実行目的でファイル拡張子に依存する唯一の OS は Windows です。
Windows との互換性が必要な場合は、拡張機能を削除しないか、システム スクリプト ファイルに適したものを自動的に生成.py
する setuptools のオプションを使用します。たとえば、機能をスクリプトとしてインストールするには、次のように指定します。entry_points
pip.main()
pip
setup.py
entry_points=dict(console_scripts=['pip=pip:main',
'pip-%s=pip:main' % sys.version[:3]]),
entry_points
特定のpythonインタープリターを指す正しいシバンを生成するため、Windows互換性が必要ない場合でも使用するのは理にかなっています(ジェネリック#! /usr/bin/env python
は間違っているでしょう)。
スクリプトがコマンドラインから実行されることを意図している場合、.py
拡張機能は実際には何もしません。スクリプトは、次の 2 つの状況で Python インタープリターを使用して実行されます。
- コマンドラインでそうするように明示的に言いました:
$ python nameofyourscript
- Python を指すスクリプトの先頭にシバンを含めることで、そうするように明示的に言いました。その推奨バージョンは
#!/usr/bin/env python
.
各スクリプトにシバンを含めることで、ファイルに任意の名前を付けることができます。
これらのいずれかを行わないと、スクリプトは、使用しているシェル用の通常のスクリプトとして実行されます。