質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

2371閲覧

pythonソースコードや関連ファイルの中身を見せずに実行させたい

wanwannyaan

総合スコア31

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

1グッド

1クリップ

投稿2020/03/14 16:40

知りたいこと

前提 : ラズパイ上のraspbian環境、rootでないアカウントの使用を想定します。また、本番環境の入出力装置については、タッチパネルのみとし、キーボードやマウスを接続しません。ちなみに現在プログラム、ファイルは全てユーザアカウントに置いていますが、必要に応じて置き場所を変更することは可能です。
本題 : pythonプログラムをタッチ(ダブルクリック扱い)で実行出来るようにしたいです。また、スクリプトの中身を参照・書き換え不能にしたいです。加えて、pythonプログラムから参照されるファイル(json)の閲覧・書き換えも不能にしたいです。何かいい案があればご教示いただけると幸いです。

ちなみに、.pyプログラムをダブルクリックするとデフォルトのソフトウェア(編集、デバッグ、実行など選べるやつ)が起動します...

(以下、蛇足)

試したこと

  1. ソースコードのユーザ権限を--xにした。
  2. 先頭行に #!/usr/bin/python3 を追加した。
  3. jsonファイルについてもユーザ権限を--xにした。

結果

1.のみの結果、プログラムを実行しようとするとデフォルトのソフトウェアが起動し、pyファイルの読み込みを試行したらしく、permission errorが出た。また、権限周りのヒントを得るべくターミナルから"python3 main.py"を試したところ、こちらもpermission errorとなり実行できなかった。

次に、ターミナルからの実行でエラーが出ないようになると聞き、2.を行った。結果、permission errorは起きず、プログラムは実行された。
その次に、jsonファイルがプログラム以外から参照されないようにしたくて、3.を行った。その結果、プログラムを実行するとjsonファイルを読み込む際にpermisson errorが発生するようになった。

わかったこと

  • 権限を実行のみにしたからと言ってダブルクリックで自動実行されるわけではない
  • プログラムからファイルの参照に必要な権限はxではなくr
s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プログラムからファイルの参照に必要な権限はxではなくr

Pythonスクリプトは、pythonコマンドでファイル内容を読むことで実行できているので、読み取り権限が必要です。
jsonファイルもプログラムで読み込むなら、読み取り権限が必要です。
変更させないのは、書き込み権限を付けなければいいだけです。

難読化ということなら、pyinstallerを使って1ファイル化すると判読困難になると思います。

投稿2020/03/14 16:53

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wanwannyaan

2020/03/15 13:04

ありがとうございます。 ダブルクリックのみでpythonプログラムを実行出来るようにする方法もあればご教示願います。 pyファイルにShebangを書いてみたり、pyファイルを実行するシェルスクリプトを保存してshファイルをダブルクリックしたりしてみたのですが、うまくいきません。
otn

2020/03/15 13:13

> うまくいきません。 とは、何をしてどうなったのでしょうか?(どうならなかったでなく)
wanwannyaan

2020/03/15 13:20

muまたはThonny Python Editorといったエディターアプリでpyファイルが開かれます。 これらのアプリケーションのどっちが選ばれるかの条件はわかりません。
otn

2020/03/15 14:10

LinuxのGUIはよく知らないのですが、ファイルマネージャーがnautilusなら、左上のアイコンから、「設定」メニューの「動作」タブで、「実行可能なテキストファイル」の設定が「内容を表示する」になっていると思うので、「どうするか確認する」を選択してください。 そうすると、実行可能ファイルをダブルクリックでメニューが出るので、「端末内で実行」または「実行する」(端末無しで実行する)を選択します。 常に「端末無しで実行する」でいいなら、先ほどの「動作」タブで「実行する」を選べばいいです。
wanwannyaan

2020/03/15 14:20

すみません、「動作」タブに「実行可能なテキストファイル」が見つからず言われた通りにはできませんでしたが自己解決しました、ありがとうございました。 pyファイルを実行するシェルスクリプトについて、shebangを書き直したらshファイルダブルクリックで「端末内で実行」または「実行する」(端末無しで実行する)を選択出来るようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問