Python プログラム用のデスクトップ ランチャーが動作しない

Python プログラム用のデスクトップ ランチャーが動作しない

cpconverter私は、A simple utility to change the code page of plain text based filesGoogle Code で公開されているソースから、まったく新しい Debian パッケージを構築しています。

すべてうまくいきました。ただし、Launchpad ランチャーが動作しません。

Python ファイルはcpConverter.pyフォルダーに保存されます/usr/share/cpconverter/cpconverter/

フォルダ内に、次のようなShell Script名前のがあります。cpconverter/usr/bin/

#!/bin/sh

python /usr/share/cpconverter/cpconverter/cpConverter.py

デスクトップランチャーcpconverter.desktopはシンプルです

[Desktop Entry]
Version=0.5
Encoding=UTF-8
Name=Code Page Converter
Name[en_US]=Code Page Converter
Comment=A simple utility to change the code page of plain text based files
Type=Application
Exec=/usr/bin/cpconverter
Icon=cpconverter
Terminal=false
StartupNotify=true
Categories=Utility;

しかし、起動に失敗します。

インストールしたcpConverter.pyものを起動して正常に動作していることを確認しました。

$ python /usr/share/cpconverter/cpconverter/cpConverter.py

その後、プログラムが起動することがあります。ランチャーをクリックした後、動作しなくなることがよくあります。

cpConverter.pyただし、パッケージのビルド構造内のファイルは常に機能します。例:

$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py

ターミナルから同じコマンド ラインを入力しようとしたところ、さまざまな聞いたことのないエラーが発生しました (少なくとも私にとっては)。

$ cpconverter
/usr/bin/cpconverter: 3: /usr/bin/cpconverter: pyhton: not found
$ 
$ pyhton /usr/share/cpconverter/cpconverter/cpConverter.py
No command 'pyhton' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
pyhton: command not found
$

convertall次に、パッケージの実際の使用例を試してみましたShell Script

#!/bin/sh

exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"

ターミナルから次のようにして正常に起動します:

$ python3 /usr/share/convertall/convertall.py "$@"

次に、Shell Script次のように変更しました。

exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"

結果は、デスクトップ ランチャーがまだ動作していないことです...砂時計が表示され、何も表示されません。ただし、次の 3 つのコマンド ラインのいずれかを使用すると、常にプログラムが起動します。

$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter

のアクセス権はcpconverter.desktop標準です:

$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec  9  2014 /usr/share/applications/clipgrab.desktop

では、なぜデスクトップ ランチャーはプログラムを起動できないのでしょうか? デスクトップ ランチャーの何が問題なのでしょうか? [上記を参照]

答え1

これが本当に必要かどうかはわかりませんが、bash スクリプトを作成したときに、このコマンド「bash $$$$$$$.sh」でスクリプトを起動しました。これについて言及する唯一の理由は、デスクトップ ランチャーのスクリプト名に .py 拡張子がないことです。何も問題ないかもしれませんが、確認して試してみる価値はあります。Craig

答え2

コメントで述べたように、デスクトップ ランチャーと同じようにディレクトリDash Scriptから実行すると、次の Python エラーが発生して失敗しました。/usr/bin/

/usr/bin$ cpconverter
Traceback (most recent call last):
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 342, in <module>
    app = cpConverter()
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 74, in __init__
    builder.add_from_file("./gui/gui.xml")
glib.GError: Failed to open file './gui/gui.xml': No such file or directory
$ 

cpconverterホーム フォルダー内の他の場所または (coCPnverter.py ファイルがある場所) でプロンプトを実行すると/usr/share/cpconverter/cpconverter成功します。

すると、犯人はファイル./内の人物であることが明らかになりましたcpConverter.py

allow-launch-from-usr-bin-script.patch私は、相対パスの代わりに絶対パス(パッケージ化後)を配置するパッチを作成しました。

builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")

それで問題が説明され、解決しました。

関連情報