私は、入力データファイルを取り、データに対して何らかの処理を行い、別のデータファイルを出力として書き出すPythonコードを書いています。配布前にPythonコードを保護する方法は?
私は今すぐ自分のコードを配布するべきですが、ユーザはソースコードを見てはいけませんが、入力を与えて出力を得るだけでよいはずです! 私は以前これをしたことがありません。
これを簡単に達成するためのアドバイスをいただければ幸いです。多くの事前
私は、入力データファイルを取り、データに対して何らかの処理を行い、別のデータファイルを出力として書き出すPythonコードを書いています。配布前にPythonコードを保護する方法は?
私は今すぐ自分のコードを配布するべきですが、ユーザはソースコードを見てはいけませんが、入力を与えて出力を得るだけでよいはずです! 私は以前これをしたことがありません。
これを簡単に達成するためのアドバイスをいただければ幸いです。多くの事前
で
おかげで、あなたは、LinuxおよびPyのインストーラを使用している場合は、このドキュメントを見て、1つのファイルを作成するために指定する必要があります。
https://pyinstaller.readthedocs.io/en/stable/usage.html#what-to-generate
Pythonはインタプリタ言語であるとして第一に、私はあなたが完全にあなたのPythonコードを保護することはできません、.pycファイルのファイルは、(例えばuncompyle6を使用して)の.pyファイルを取り戻すためにコンパイルされていないことができると思います。
あなたができる唯一のことは、読みにくいことです。
私はPyminifierは物事のようなものを行うなど、変数/関数名を変更するコメントやドキュメンテーション文字列を削除し、無用のスペースを除去することで、コードが読めなくなってで構成されていコードの難読化、を見てすることをお勧めします。 独自の難読化スクリプトを作成することもできます。
次に、プログラムを1つの実行可能ファイル(たとえば、pyinstallerを使用)に変換することもできます。私は実行可能ファイルから.pyファイルを取得する方法があると確信していますが、それはもっと難しくなります。また、実行可能ファイルを作成する際のプラットフォーム間の互換性に注意してください。
Pythonは設計上の解釈言語なので、コードをバイトコードにコンパイルするとき(バイトコードが逆転しやすいため、隠すことはできません)、ソースコードを隠すための安全な方法はありません。どのプログラミング言語でも真実です。
最初は、簡単に元に戻すことができない言語で作業したい場合は、元のアーキテクチャのマシンコードに直接コンパイルするより母国語に移行してください。これは再現が非常に困難です元の言葉では、きちんとしたコンパイラ最適化、CISC等によって与えられたオーバヘッドのために読まれることはありません。
しかし、(Pythonインタプリタと、それと並んで、バイトコードを充填することにより)実行可能な形式にソースコードを変換しませんいくつかのライブラリをそのまま使用することができます。
また、コードの難読化で、ソースコードを読むことができますが、読みにくいものにすることができます。
しかし、この問題は、悪いコードの難読化技法がコードを静的にする可能性があるため、コードを追加するのが難しいことがあります。また、後者の場合、コードは、コードをオーバーレイさせて、コードを欺くことや、ユーザーがコードがそうでないことをしていると思うようにすることを意味する冗長コードによってもたらされる可能性があります。
また、一般に、オープンソースの標準的な実践を否定しています。これは、Pythonが大切にしてサポートしていることです。
実際に結論づけるには、上記のすべてを読んでみたくない場合は、あなたが間違っていた最初のことは、このためにPythonを選択したことです。これはオープンソースをサポートする言語であり、オープンソースでもあります。したがって、問題を緩和するためには、言語を再考するか、上記の参考文献に従ってモジュールのリンクを参照して、ソースコードの基本的な隠蔽に役立ててください。
ありがとうございました。私はチュートリアルに従おうとしていますが、py2exeはUbuntuで動作しませんか?私はpyinstallerをインストールしました....そして今私は失われています,,,それはdistを生成し、フォルダを構築しますが、私は任意の.exeファイルを持っています – user8224662
なぜ私の答えはdownvotedですか? –
私のせいではない!私は投票しなかった!今私はそのゼロをした! – user8224662