OSXを実行していて、PythonプログラムがResources
フォルダーにあるアプリを作成しています。BashスクリプトはPythonアプリの起動時に実行するスクリプト。スクリプトはアプリ内のMacOS
フォルダーにあり、アプリと同じ名前が付けられています。次のBashスクリプトがあります。
#!/bin/bash
clear
python /Applications/Converter.app/Contents/Resources/Converter.py
アプリの起動時にBashスクリプトが実行されると思ったので、pythonスクリプトがターミナルウィンドウから実行されました。しかし、アプリをダブルクリックしても何も起こりません。
したがって、基本的には、bashスクリプトでPythonプログラムをターミナルウィンドウで開いて、ユーザーが操作できるようにします。
ここで何が欠けていますか?
どうしても_.app
_バンドルである必要がある場合は、次の問題に対するより良い解決策があります。
_Converter.app/Contents/MacOS/Converter
_スクリプトで、「open」コマンドを使用してPythonスクリプトを起動します。
_open $(dirname "$0")/../Resources/Converter.py
_
(上記の相対パス名のトリックを実行したので、_.app
_を移動した場合に破損する絶対パスをハードコーディングしていません。)
_Resources/Converter.py
_スクリプトの上部にPythonシバンがあることを確認してください:
_#!/usr/bin/python
_
_MacOS/Converter
_と_Resources/Converter.py
_の両方が実行可能としてマークされていることを確認してください(それらには_chmod a+x filename
_を使用してください)。
この設定をテストしたところ、open
コマンドは、何もせずに_.py
_ファイルをターミナルで開く必要があることを正常に認識しました。以前、このシステムで_.py
_ファイルをTerminal.appに関連付けたことはないと思います。したがって、これらの手順は、クリーンなシステムでもこれ以上の手順は必要ないと思います。
新しいターミナルウィンドウで実行されるダブルクリック可能なスクリプトを作成する最も簡単な方法は、ファイル名を「.command」で終了することです。次に、スクリプトファイル自体をダブルクリックできます。appバンドル/パッケージは必要ありません。
Pythonの前にbash
コマンドを実行する場合は、両方を同じファイルに入れますが、Pythonコードをbash
exec
ステートメントでラップします。TCLスクリプターはこの方法で多くのことを行います。 Pythonコードでbash
コードがない場合は、上部のShebangを#!/usr/bin/python
(またはPythonシステム上に存在する場所)に変更します。
個人的には、.appとして表示されるものは好きではありませんが、実際には、独自の実際のアプリではなく、ターミナルウィンドウで実行されます。これが行われているのを私が見たのは、OSX用のIxiaChariotエンドポイントだけでした。数年は見ていませんが、それでもそのように機能する可能性があります。無料でダウンロードできます。あなたはそれをつかんで彼らがそれをどのようにしたかを見て、そして多分あなた自身の質問への答えを投稿したいかもしれません。彼らの解決策は、ターミナル設定ファイルをアプリにパッケージ化することだったと思います。これにより、Terminal.appの別のインスタンスが奇妙なカスタム設定で起動され、新鮮でエキサイティングな方法で煩わしかったと思います。 :)
スクリプトを.command
または.tool
拡張子に変更してみてください。ただし、最近のOSXでは機能しない可能性があります。
ただし、スクリプトをアプリにする必要がある場合は、スクリプトを作成する必要があります。
Macアプリの基本構造は次のとおりです。
MyApp.app/
Contents/
Info.plist
MacOS/
Resources/
次に、スクリプトをMacOS/
(アプリと同じ名前)にコピーします。これには、アプリケーションのスタンドアロン実行可能コードが含まれている必要があります。他のすべてのリソースはResources/
に入ります。
基本的に次のようになる、Thomasによる appify スクリプト(または Mathiasバージョン )をご覧ください。
#!/usr/bin/env bash
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
使用法:
appify foo.sh "Bar"
出典: シェルスクリプトから簡単なMacアプリを作成する方法
または、次を使用することもできます。
または、次の方法で手動で作成します。
MyApp.app/Contents/MacOS/MyApp.app
言い換えれば( ジーノ ):
- シェルスクリプトを作成します(例:
command.sh
)- 実行権限を付与します(
chmod 755 ./command.sh
)- 情報を取得→次で開く:→(ターミナルアプリを関連付ける)
- 情報を得る→(必要なアイコンをその上に置きます)
参照: