我如何将带有外部库和文件的Python软件包编译为.so文件?

问题描述 投票:1回答:1

几天前,我的一个好朋友对自己知道可以将其出售给认识的某些人的软件产生了想法,然后他问我是否可以开发代码。我是这么说的,我们建立了伙伴关系。我在Python 3.8.2上使用PyCharm 2020.1Windows 10。到目前为止,我已经准备好了大多数后端代码,并且我将项目组织如下:

项目/

venv/  
BackendPackage/  
    __init__.py
    Files/  
        Templates/  
            GroupA/  
                imageA1.png  
                imageA2.png  
            GroupB/  
                imageB1.png  
                imageB2.png  
        some_sound.wav  
        default_configs.json  
    Essentials/  
        __init__.py  
        moduleA.py    # imports all the required libraries for the backend, like Numpy and Os  
        moduleB1.py   # imports moduleA.py  
        moduleB2.py   # imports moduleA.py  
        moduleB3.py   # imports moduleA.py  
        moduleB4.py   # imports moduleA.py  
    backend.py    # imports moduleB1.py, moduleB2.py, moduleB3.py and moduleB4.py  
wx_form.py   (created with WxFormBuilder)  
frontend.py   # imports wxpython and BackendPackage.backend.py  
temporary_image.png   (created, used and overwritten by some functions)  
configs.json   (used to store users preferences. Created as a copy of default_configs.json in the setup)

A模块设置程序的最基本功能。 B模块设置了可能调用A的更复杂的功能。后端模块设置了前端将调用的所有功能(例如,当用户按下按钮时)。重要的事实是run函数(程序中最重要的函数)每次都会调用由Cryptlex提供支持的license-checker函数,因此,如果没有有效的许可证,也没有办法运行它而无需更改python代码本身。

现在出现了问题:释放。 无论如何,实际上是否要冻结BackendPackage?用它制作一个.so编译文件吗?

我搜索了很多有关Cython的信息,但没有发现包括所需的图像,声音和文本文件,以及在A模块中调用的所需库本身的任何信息。 Setuptools对我也出现了,但是它似乎不能编译该程序包,只是可以更好地组织它。 PyInstaller也无济于事,它甚至无法使用Cython,这就是我从中获得.so想法的地方。

因此,我们来回顾一下这个问题:如果包含外部文件和库,是否有任何方法可以将Python软件包编译为.so文件?如果没有,有什么秘诀可以实现我的目标?

[如果我能做到,他们只需将BackendPackage.so包含在frontend.py中,然后使用PyInstaller从中创建可分发文件。如果您能帮助我,我将非常感谢。另外,我对项目结构了解不多,请让我知道这种组织文件的方式是否效率低下。 Abraços来自巴西。

Ps:这些不是文件的真实名称,只是我认为很容易理解的一种方式。

python cython release packaging
1个回答
0
投票

您可以将文件作为base64文本包含在python源代码中,并使用base64 python模块对其进行解码。

© www.soinside.com 2019 - 2024. All rights reserved.