我知道C或C++中静态链接和动态链接的区别。但在Python中意味着什么呢?由于它只是一个解释器,并且只有一种模块导入机制,这有什么意义呢?
如果我使用cx_freeze冻结我的Python应用程序并排除特定库,这是一种动态链接吗?因为用户必须自己下载和安装该库才能运行我的应用程序。
实际上,我的问题是,我正在使用PySide库(带有LGPL v2.1)开发Python GUI应用程序。该库说我应该动态链接到该库以遵守其法律条款(与Qt相同)。在这种情况下,我如何动态链接到PySide?
我知道C或C++中静态链接和动态链接的区别。但在Python中意味着什么呢?由于它只是一个解释器,并且只有一种模块导入机制,这有什么意义呢?
如果我使用cx_freeze冻结我的Python应用程序并排除特定库,这是一种动态链接吗?因为用户必须自己下载和安装该库才能运行我的应用程序。
实际上,我的问题是,我正在使用PySide库(带有LGPL v2.1)开发Python GUI应用程序。该库说我应该动态链接到该库以遵守其法律条款(与Qt相同)。在这种情况下,我如何动态链接到PySide?
在 Python 中,没有静态链接。所有的导入都需要目标机器上安装正确的依赖项。这些库的版本选择取决于我们的决策。
现在让我们来谈谈 Python 的二进制构建。在这种情况下,我们将根据 GNU 定义确定链接类型。如果用户可以自行更换依赖关系,则为动态链接;如果依赖关系与二进制文件本身一起附加,则为静态链接。在 cx_freeze 或 pyinstaller 的情况下,如果我们将其构建为一个文件,则为静态链接;如果我们以普通模式构建,其中所有依赖项都被收集为单独的文件,则为动态链接。核心思想是,我们是否可以在目标机器上替换依赖关系。