Python中的静态链接和动态链接是什么意思?

What does it mean for statically linking and dynamically linking in Python?

我知道在 C 或 C++ 中静态和动态 linking 之间的区别。但是在Python中是什么意思呢?由于它只是一个解释器,并且只有一种风格的模块导入机制,这有什么意义呢?

如果我通过排除特定库来冻结我的 Python 应用程序 cx_freeze,这是否是一种动态 linking?因为,用户必须自己下载并安装该库才能 运行 我的应用程序。

实际上我的问题是,我正在使用 PySide 库(使用 LGPL v2.1)开发 Python GUI 应用程序。图书馆说我应该动态 link 到图书馆以遵守他们的法律条款(与 Qt 相同)。在这种情况下,如何动态地 link 到 PySide?

在 python 中没有静态链接。所有导入都需要在我们的目标机器上安装正确的依赖项。此类库版本的选择由我们决定。

现在让我们来看看 python 的二进制构建器。在这种情况下,我们必须根据 GNU 定义来确定链接类型。如果用户可以随心所欲地替换依赖,它就是动态的。如果依赖项与二进制文件本身一起附加,则它是静态链接。在 cx_freeze 或 pyinstaller 的情况下,如果我们将其构建为一个文件,则它是静态链接。如果我们在正常模式下构建它,其中所有依赖项都作为单独的文件收集,那么它就是动态链接。想法是,我们是否可以替换目标机器中的依赖项。