먼저 다음 명령을 사용하여 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" 오류가 발생합니다.
미리 감사드립니다.