まあ、私はPythonパッケージです。簡単にインポートできるように配布する前にdllとしてコンパイルする必要があります。How?*.pyc
。しかし、どこかで_*.pyc
は簡単に逆コンパイルできます!
更新:以下に従ってください:
1)pythonパッケージを書きました
2)配布したい
3)ソースを配布したくない
4)* .pycは逆コンパイル可能>>ソースを抽出可能!
5)dllは標準です
Cythonで非表示にするものをすべて記述し、pyd
にコンパイルします。これは、コンパイルされたpythonコードを作成するのに近づきます。
また、dllは標準ではなく、Python world。ではありません。移植性もありません。
embed python Cの中に 。本当のトリックはC値とPython値の間で変換することです。ただし、DLLを作成することは かなり簡単 です。
しかし、なぜdllを作成する必要があるのですか? Python以外のプログラムからこれを使用する必要がありますか?
py2exe.org を使用して、pythonスクリプトをWindows実行可能ファイルに変換できます。これはWindowsでのみ機能しますが、何もしないよりはましです。
Python埋め込みはCFFIバージョン1.5でサポートされています 、.dll
ファイルは、Windows Cアプリケーションで使用できます。
また、Dikeiが書いたように、 Cython を使用してpyd
ファイルを生成します。しかし、本当にコードを保護したい場合は、重要なものをC++で記述する方が良いでしょう。最善の方法は、C++とPythonの両方を組み合わせることです。アイデア:python調整のためにコードを開いたままにして、繰り返しすべてをコンパイルする必要がないようにします。つまり、C++で「コア」を記述します(これは最近の最も安全なソリューションです)、これらのdll
ファイルをpythonコードで使用します。実際に作成するツールやプログラムの種類とその方法によって異なりますツールまたはプログラムを終了したら、主に実行ファイル(exe
、app
)を作成しますが、これはエンドユーザー向けです。これは_py2exe
_および_py2app
_(両方とも64ビット互換)インタープリターを実装する場合、エンドユーザーのマシンにシステムにpythonをインストールする必要はありません。
pyd
ファイルはdll
と同じで、python内で完全にサポートされています。したがって、通常はモジュールをインポートできます。それに関する詳細情報を見つけることができます こちら 。
pyd
ファイルを使用して生成することは、安全で移植性のあるpythonコードを作成するための最速かつ最も簡単な方法です。
また、実際のdll
ファイルを C++ で記述し、ctypes
でインポートして使用することもできます(ここでは post を、ここでは- pythonの説明 仕組み
Nick ODellの回答をさらに拡大するには
DLLを機能させるにはWindowsを使用する必要があります。DLLは移植性がありません。
ただし、以下のコードはクロスプラットフォームであり、すべてのプラットフォームがランタイムをサポートしているため、作業に必要なプラットフォームごとに再コンパイルできます。
Pythonは(まだ)dllを作成する簡単なツールを提供していませんが、C/C++でそれを行うことができます
最初に、特にCygwin、MinGW、またはVisual Studioのコンパイラー(Windowsにはデフォルトではありません)が必要です。
Cの基本的な知識も必要です(主にCでコーディングするため)。
必要なヘッダーも含める必要があります。これをスキップして、ひどく長くならないようにし、すべてが正しくセットアップされていると仮定します。
このデモでは、伝統的なこんにちはの世界を印刷します。
DLLに変換するPythonコード:
def foo(): print("hello world")
Cコード:
#include "Python.h" // Includes everything to use the Python-C API
int foo(void); // Declare foo
int foo(void) { // Name of our function in our DLL
Py_Initialize(); // Initialise Python
PyRun_SimpleString("print('hello world')"); // Run the Python commands
return 0; // Finish execution
}
Pythonを埋め込むための tutorial は次のとおりです。ここに追加する必要がある余分なものがいくつかありますが、簡潔にするためにそれらを省略しました。
それをコンパイルすると、DLLが必要になります。 :)
それだけではありません。必要な依存関係を配布する必要があります。つまり、python36.dll
ランタイムとPythonスクリプトを実行する他のコンポーネントが必要です。
私のCコーディングは完璧ではありません。だから誰でも改善点を見つけることができたらコメントしてください。私はそれを修正するために最善を尽くします。
この答えからC#でも可能かもしれません C#でPythonスクリプトから特定のメソッドを呼び出すにはどうすればよいですか? 、C#はDLLを作成でき、Python C#の関数。
pyinstaller を使用して、.pyファイルを実行可能ファイルに変換し、必要なすべてのパッケージを.dll形式に変換できます。
ステップ1. pip install pyinstaller、
ステップ2. new python fileではcode.pyという名前にします。
ステップ3.コードの数行、つまりprint( "Hello World")を書く
ステップ4.同じ場所でコマンドプロンプトを開き、pyinstaller code.pyを入力してEnterキーを押します。最終ステップでは、同じ場所に2つのフォルダー名buildが表示され、distが作成されます。 distフォルダー内にはフォルダーコードがあり、そのフォルダー内には、exeファイルcode.exeと必要な.dllファイルがあります。