我用 python 编写了一个简单的应用程序并使用它进行了编译赛通,生成的.so
文件如下图所示:
$ ls -l
总计 2040 -rw-r--r-- 1 groot groot 486 Jun 14 15:50compile.py
-rwxr-xr-x 1 groot groot 349232 Jun 14 17:12 CopyDebugThread.cpython-36m-x86_64- linux-gnu.so
-rwxr-xr-x 1 groot groot 491040 Jun 14 17:12 CopyDialog.cpython-36m-x86_64-linux-gnu.so
drwxrwxr-x 2 groot groot 4096 Jun 10 21:09 图像
-rwxr-xr -x 1 groot groot 84224 Jun 14 17:12 Main.cpython-36m-x86_64-linux-gnu.so
-rwxr-xr-x 1 groot groot 403424 Jun 14 17:12 MainWindow.cpython-36m-x86_64-linux-gnu .so
-rw-r--r-- 1 groot groot 12 Jun 14 17:43 run.py
-rwxr-xr-x 1 groot groot 739760 Jun 14 17:13 UiMainWindow.cpython-36m-x86_64-linux-gnu。所以
- 如何将该项目作为安装在 Ubuntu 18.04 中的真实应用程序运行?
- 是否可以 ?
- 或者我将它导入到另一个python文件中,然后运行该python文件?
答案1
.so
文件是动态库,它们不单独运行,而是从其他程序加载。您可以从本地文件夹加载它们,也可以将其放入 PATH 变量中列出的文件夹中,然后从不同目录中的另一个程序加载它。
答案2
正如 Stephen Kitt 指出的那样,您拥有的是共享库(相当于 Windows .dll)。人们普遍认为 Cython 旨在为 Python 创建 C 模块而不是整个程序(相当于 Windows .exe)。因此,您会发现互联网上对 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
.