나는 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.cpython-36m-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-x 2 groot groot 4096 6월 10일 21: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월 14일 17:12 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_64-linux-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
.