フルパスを使用してこのプログラムを呼び出すことができないのはなぜですか?

フルパスを使用してこのプログラムを呼び出すことができないのはなぜですか?

Python 3では、既存のコマンドラインツール用のコマンドラインラッパーを作成しようとしていますが、spookyいくつかの奇妙な動作を理解するのに問題があります。コマンドラインにspookyと入力すると、spookyのマニュアルページが表示されます。/path/to/spookyコマンドラインにspookyツール()パスを入力すると、spookyのマニュアルページも表示されます。

パスにspookyを入れて必須パラメータを入力すると、spookyプログラムを正常に実行できます。

$ spooky -a 50 -b .97

ただし、パスにspookyを入れずに次のコマンドを入力すると、実行されません。

$ /path/to/spooky -a 50 -b .97

プログラムパスと必須パラメータを入力しましたが、なぜプログラムが実行されないのですか?

答え1

あなたの質問では、「spooky」は既存のコマンドを意味しますか、それとも自分で書いたPython 3ラッパーを意味しますか?

そして、コマンドラインにspookyと入力すると、マニュアルページが表示されると言いました。そうですか?マニュアルページを呼び出すのは「man spooky」ではなく、「spooky」そのものですか?

次に追加:

あなたが言ったように、「spooky」コマンドは、呼び出される名前を含む独自の引数をチェックし、その名前がフルパス名で実行されたときに発生する「spooky」ではないかどうか不平を言うようです。

簡単な解決策は、ラッパーで「ゴースト」モードでコマンドを実行し、そのコマンドがパスにあることを確認することです。

答え2

「実行されません」以外のエラーメッセージは非常に役立ちます。

しかし、追加してみてください。

  #!/usb/bin/python 

(または #!/usb/bin/python3.2 またはシステムで使用される Python インタプリタ) を Python スクリプトの最初の行として指定します。

また、unix chmod コマンドを使用してファイルを実行可能としてマークします。

 chmod u+x /path/to/spooky 

答え3

「spooky」が引数を正しく解析できないように聞こえます(理由と方法はspookyが書かれた言語によって異なります)。

簡単な解決策はを使用することですos.chdir

関連情報