2

Windows プラットフォームでは接頭辞付きのスクリプトをインストールし、他のすべてのプラットフォームでは接頭辞なしでsetup.pyスクリプトをインストールするように構成するにはどうすればよいですか? .py私が解決しようとしている問題は、Windows が.pyPython スクリプトを認識して実行するための拡張機能を必要とすることです。

次のようなパッケージを設定しています。

MyPackage
├── CHANGES
├── ...
├── scripts
│   └── myprogram
├── setup.py
└── mypackage
    ├── __init__.py
    ├── ...
    └── myprogram.py

私のsetup.pyファイルでscripts/myprogram、インストール可能なスクリプトとして宣言します

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from setuptools import setup

...

setup(
    name='MyPackage',
    ...
    packages=['mypackage'],
    scripts=['scripts/myprogram'],
    ...
)

このmyprogramスクリプトは、以下を呼び出すだけの薄いラッパーですmypackage.myprogram.main()

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from mypackage import myprogram
myprogram.main()

*nix プラットフォームでは、これはmyprogramという名前の実行可能ファイルとしてインストールされますがmyprogram、これは私が望んでいるものですが、Windows ではディレクトリmyprogram内にもインストールされるC:\PythonXX\Scriptsため、コマンド ラインでは認識されません。セットアップ スクリプトをWindows とmyprogram同じようにインストールして、Windows がファイル タイプを認識して実行可能にする方法を教えてください。myprogram.py

4

1 に答える 1

0

関連する質問へのこの回答で説明されているように、を含む辞書で呼び出されたのキーワード引数がsetup()呼び出されました。entry_points'console_scripts'

新しいsetup呼び出しは次のようになります。

 setup(
    name='MyPackage',
    ...
    packages=['mypackage'],
    entry_points={
        'console_scripts': [
            'myprogram = mypackage.myprogram:main'
        ]
    }
    ...
)

これらの変更を行った後、scriptsディレクトリとmyprogramファイルをそこから削除しました。

インストーラーを実行すると、distribute によってC:\PythonXX\Scripts:myprogram-script.pyとの下に 2 つのファイルが作成されますmyprogram.exe。その結果、ユーザーはmyprogram*nix または Windows プラットフォームのコマンド ラインに入力して、常に同じプログラムを実行できるようになりました。とても便利な!

于 2013-01-10T18:56:54.223 に答える