16

私はPythonで商用アプリケーションの作業を開始し、アプリケーションを配布する方法の選択肢を検討しています。

明らかな(適切な商用ライセンスでソースを配布する)ことは別として.pyc、対応するソースなしでファイルだけを配布することを検討しています.py。しかし、私はPythonの互換性の保証について十分に精通しておらず、これが実行可能であるかどうか、ましてやそれが良い考えであるかどうかを知ることはできません。

.pycファイルは基盤となるOSから独立していますか?たとえば.pyc、64ビットのLinuxマシンで生成されたファイルは、32ビットのWindowsマシンで機能しますか?

.pycファイルはバグ修正リリース間で互換性があるはずですが、メジャーリリースとマイナーリリースはどうですか?たとえば、Python3.1.5で生成されたファイルはPython3.2.xと互換性がありますか?または.pyc、Python 2.7.3で生成されたファイルはPython3.xリリースと互換性がありますか?

編集:

主に、ソースの配布に不快感を覚える利害関係者をなだめる必要があるかもしれません。ソースなしで'を配布.pycすると、ある程度の快適さが得られる可能性があります。これは、ソースを取得するために逆コンパイルの追加のステップが必要になるためです。正直な人々を正直に保つのに十分な障壁。

4

3 に答える 3

17

たとえば、Python3.1.5で生成されたファイルはPython3.2.xと互換性がありますか?

いいえ。

または、Python 2.7.3で生成された.pycファイルはPython3.xリリースと互換性がありますか?

二重にありません。

対応する.pyソースなしで.pycファイルだけを配布することを検討しています。

Pythonバイトコードは高レベルであり、簡単に逆コンパイルできます。

于 2012-07-06T19:16:08.417 に答える
4

確かに、.pycファイルのみを配布できます。Catが述べたように、Pythonの異なるメジャーバージョンとは互換性がありません。一部の人がソースコードを表示できなくなる可能性がありますが、.pycファイルは非常に簡単に逆コンパイルできます。基本的に、コンパイルできれば逆コンパイルできます。

py2exe / py2app/freezeのようなバイナリパッケージャーを使用できます。私はそれらを試したことがありませんが、必要に応じて誰かがそれらを逆コンパイルすることができます。

于 2012-07-06T19:25:09.783 に答える
1

Catが言ったように、pycファイルはクロスバージョンセーフではありません。あなたがユーザーから隠そうとしていることはあなたが何をする必要があるかを決定しますが。

ソースコードに関しては、分散アプリケーションでPythonソースコードを隠す良い方法はありません。特定の詳細を非表示にしようとしている場合は、それらをC拡張機能にパックすることができます。これは逆コンパイルがはるかに困難です。

したがって、コードの使用が心配な場合は、コードにライセンスを添付して使用しないようにするか、盗まれたくないセクションをコンパイルされた言語に翻訳してください。コードを明らかにPythonにしたくない場合は、Pythonコードをラップするバイナリ実行可能ファイルを作成できます(ただし、誰かがファイルから実際の詳細を抽出しても、実際の詳細は非表示になりません)。

于 2012-07-06T22:35:15.353 に答える