私はPythonで簡単なアプリケーションを書いて、次のようにコンパイルしました。サイトーン、生成された.so
ファイルは以下のようになります。
$ ls -l
合計 2040 -rw-r--r-- 1 groot groot 486 6月14日 15:50compile.py
-rwxr-xr-x 1 groot groot 349232 6月14日 17:12 CopyDebugThread. -x86_64- linux -gnu.so
-rwxr-xr-x 1 groot groot 491040 6月14日 17:12 CopyDialog.cpython-36m-x86_64-linux-gnu.so drwxrwxr-x2 2
gro :09 image-
rwxr-xr - x 1 groot groot 84224 6月14日 17:12 Main.cpython-36m-x86_64-linux-gnu.so
-rwxr-xr-x 1 groot groot 403424 6 MainWindow.cpython-36m-x86_64-linux-gnu 。だから
-rw-r--r-- 1 groot groot 12 6月14日 17:43 run.py
-rwxr-xr-x 1 groot groot 739760 6月14日 17:13 UiMainWindow.cpython-36m-x86_ -gnu。だから
- このプロジェクトをUbuntu 18.04にインストールされた実際のアプリケーションとしてどのように実行できますか?
- 可能ですか?
- それとも別のPythonファイルにインポートしてから、そのPythonファイルを実行しますか?
答え1
.so
ファイルは動的ライブラリであるため、個別に実行されるのではなく他のプログラムからロードされます。ローカルフォルダからロードすることも、PATH変数にリストされているフォルダに配置して別のディレクトリの他のプログラムからロードすることもできます。
答え2
Stephen Kittが指摘したように、共有ライブラリ(Windows .dllと同じ)があります。 Cythonは、プログラム全体(Windows .exeと同じ)ではなく、Python用のCモジュールを生成するように設計されていることが一般的に認められています。したがって、Cythonがこのように使用されるというアイデアに対して、インターネット上でわずかな抵抗を発見することになります。
ただし、この回答を確認する必要があります。https://stackoverflow.com/a/22040484/453851
Cコンパイラを使用すると、Cythonで実行可能ファイルを作成できます。つまり、次のようにしてCytonにCコードを書くように指示できます。
cython3 --embed -o run.c run.py
その後、コンパイルします。
gcc -I /usr/include/python3.3m -o run run.c -lpython3.3m -lpthread -lm -lutil -ldl
Cコンパイラに慣れていない場合は、この-l
スイッチがプログラムを他の.so
ライブラリにリンクすることに注意してください。-lpython3.3m
接続はpython3.3m.so
重要ですが、接続するPythonのバージョンによって異なります。
したがって、このようにコンパイルされたプログラムを実行するには、システムにいくつかのPythonライブラリをインストールする必要があります。
あなたの質問は、これを「インストール」する方法に関するものでもあります。ビルドされたファイルを.dpkg
。dpkg --install my-program.dpkg
https://ubuntuforums.org/showthread.php?t=910717
または、システムの正しい場所にファイルを配置できます。パッケージされていないプログラムは/usr/local/bin
通常/usr/local/lib
。