8

distutils を使用して、この setup.py で Python パッケージをインストールしました。

import distutils.core

args = {
    'name' :            'plugh',
    'version' :         '1.0',
    'scripts' :         [ "scripts/plugh" ],
    'packages':         [ "plugh" ],
}

d = distutils.core.setup(
    **args
)

Linux/Mac では、期待どおりに動作します。

% plugh
hello world
% 

Windows では、スクリプト「plugh」は実行されません。

C:\Python25\Scripts>plugh
'plugh' is not recognized as an internal or external command,
operable program or batch file.

C:\Python25\Scripts>

http://bugs.python.org/issue7231で、Python をインストールするときに \Scripts ディレクトリが PATH に追加されないというバグ レポートを見つけたので、そのチケットに記載されている回避策を適用しました (つまり、C:\Python25\Scripts を追加します)。へ)

C:\Python25\Scripts>path
PATH=c:\Python25\Scripts;C:\Program Files\Legato\nsr\bin;C:\WINDOWS\system32;C:\
WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;c:\python2
5;c:\local;C:\WINDOWS\system32\WindowsPowerShell\v1.0

これは Windows でしか動作しないものですか? もしそうなら、WindowsマシンでPythonスクリプトをどのように使用することになっていますか?

Windows を検出し、次のようなものを含む「plugh.bat」と呼ばれる追加のスクリプトをリストに追加できると思います。

@echo off
c:\python25\python.exec c:\python25\scripts\plugh %1 %2 %3 %4 %5 %6 %7 %8 %9

しかし、それは本当に正しい答えですか?distutils に Windows 用のすべてのカスタマイズが含まれているため、それよりも優れた答えがあると思います。

4

2 に答える 2

6

Windowsは、ファイルの拡張子を使用して、ファイルの実行方法を決定します。

ファイルに名前を付け、プロンプトplugh.pyで使用plugh.pyして呼び出します。

于 2009-12-01T23:19:26.263 に答える
5
  1. ActivePythonを使用している場合は、インストール中にすでにC:\PythonXY\Scriptsディレクトリが追加されています%PATH%(ActivePython 2.6 ではさらにPEP 370%APPDATA%\Python\Scriptsに追加され%PATH%ます)。

  2. Windows マシンにスクリプトを展開するには、スクリプトの .exe ラッパーのインストールと、パッケージがインストールされた実際の Python の呼び出しを処理する Distribute を使用することをお勧めします(複数の Python インストールとの競合を避けるため、スクリプトの名前は end. py だけでは十分ではありません)。このトピックの詳細については、Distribute ドキュメントのエントリ ポイントを参照してください。

于 2009-12-20T20:10:47.830 に答える