まず、次のコマンドを使用してubuntu-16.04でPythonスクリプトのバイナリを作成しました。
cython3 --embed -o hello.c hello.py
gcc -Os -I /usr/include/python3.5m -o hello hello.c -lpython3.5m -lpthread -lm -lutil -ldl
しかし、議論すべきいくつかの問題があります。
1- Pythonスクリプトを削除すると、バイナリにインポートエラーが発生します(.pyファイルからインポート)。
2- .pyファイルを削除しないと、すべてのバイナリが完全に実行されます(これによりバイナリの生成が完全に無意味になります)。
問題は、実行可能ファイルがバイナリファイルであり、バイナリファイルにインポートされたいくつかの定数と関数が.pyスクリプトからインポートされたことを知っています。
私のプロジェクトコードの流れは次のとおりです。
**Main folder**
**Scripts1 Folder**
Script1.py
Script2.py
Script3.py & many other .py scripts...
**Scrip1.1 Folder**
Script1_1.py
Script1_2.py & many .py scripts
**Script2 Folder**
Script1.py
Script2.py & many other .py scripts
生成時にインポートされたすべての定数/関数を含むバイナリを実行する方法はありますか?
gccを使用して.pyスクリプトなしで実行できる.pyの.cコードからバイナリを生成する方法はありますか?
.pyスクリプトからのインポートに問題はありません。
例:
スクリプト1から関数1を取得する
script1_2から定数を取得する
実際、問題は、このインポートがバイナリファイルのPythonスクリプトからインポートされ、他のバイナリファイルからバイナリにインポートしたいということです。フォルダから .py スクリプトを削除すると、「ImportError: Cannot import function1 from script1. No such file script1.py」エラーが発生します。
よろしくお願いします。