4

LinuxとbashでPythonスクリプトを実行可能にするには、シバンを使用します

#! /usr/bin/env python

スクリプトの最初の行として。この行がたまたまUnixスタイルの改行ではなくWindowsスタイルの改行\r\ n(キャリッジリターン-ラインフィード)で終わっている場合、bashはPythonインタープリターを介してスクリプトを実行できません。

Pythonでクロスプラットフォーム開発を行っています。私がWindowsで作業しているとき、自然な改行は\ r\nです。Linuxで作業している場合、自然な改行は\nです。バージョン管理にMercurialを使用しているとすると、シバンを含むスクリプトファイルで\n改行の使用を強制するための最良の方法は何でしょうか。

4

3 に答える 3

5

一般的なアプローチは、外側のラッパー スクリプトを自分でまったく生成せずに、スクリプトで指定し、setup.pyパッケージのインストール中に生成させることです。

次のようなことをすると:

setup(
    entry_points = {
        "console_scripts": [
            "script_name": "your.module.name:main",
        ],
    }
)

...その後、インストール時に、という名前のラッパーscript_nameが生成およびインストールされ、現在のプラットフォーム (シバン行など) で実行するように適切に構成されます。これにより、使用中の行末文字が無意味になります。

于 2012-10-03T18:01:43.990 に答える
1

この問題は、Python だけでなく、非ネイティブ プラットフォームで開発されたすべてのスクリプトに共通しています。ほとんどの SCM には、自動改行変換機能があります。Mercurial はこれを行うことができますが、デフォルトではありません。EOL 拡張を参照してください。

于 2012-10-03T17:51:01.497 に答える
0

EolExtensionを確認することをお勧めします。

EolExtensionを使用すると、リポジトリに特定の行末を適用できます。異なる行末でコミットされたファイルは、自動的に変換されます。

于 2012-10-03T17:50:49.297 に答える