我应该将C库与Python应用程序捆绑在一起吗?
如果我有一个Python包,它依赖于一些C库(比如用于数值计算的Gnu科学库(GSL)),那么将该库与我的代码捆绑在一起是一个好主意吗 我想让我的软件包尽可能容易地为用户安装,我不希望他们不得不手动下载C库并提供包含路径。此外,我还可以始终确保我提供的库的版本与我的代码兼容 但是,如果用户已经安装了库,是否可能会发生冲突,或者是否有其他原因导致我不应该这样做我应该将C库与Python应用程序捆绑在一起吗?,python,c,distutils,Python,C,Distutils,如果我有一个Python包,它依赖于一些C库(比如用于数值计算的Gnu科学库(GSL)),那么将该库与我的代码捆绑在一起是一个好主意吗 我想让我的软件包尽可能容易地为用户安装,我不希望他们不得不手动下载C库并提供包含路径。此外,我还可以始终确保我提供的库的版本与我的代码兼容 但是,如果用户已经安装了库,是否可能会发生冲突,或者是否有其他原因导致我不应该这样做 我知道我可以通过提供一个二进制发行版来简化用户的操作,但我希望避免为所有可能的操作系统维护二进制发行版。因此,我希望坚持使用源代码发行版,
我知道我可以通过提供一个二进制发行版来简化用户的操作,但我希望避免为所有可能的操作系统维护二进制发行版。因此,我希望坚持使用源代码发行版,但是对于用户(自豪地拥有一个C编译器)来说,安装应该像
python setup.py install
一样简单 src可以有两个独立的分支,一个包含库,另一个不包含库。这样,在用户安装了库的情况下,您可以显式警告用户。另一个解决方案是(如果图书馆的许可证允许的话)将它们打包成一个文件
我认为没有唯一的解决方案,但这是我目前可以想到的想法
祝您好运您可以使用它为应用程序创建私有Python环境。这避免了与其他库的冲突。最好是使用打包模块和依赖项,如库。发行版是任何软件项目的难点之一。Java和.NET定义了一个标准的运行时,然后只说“只分发其他所有内容”,从而减轻了部分负担。当然,这也有一个缺点:所有内容都必须用运行时支持的语言重写—只要您想使用本机代码,您就失去了所有优势 Python在Ruby、C、C++和其他语言中比较困难,因为它们通常利用现有的本地库。 一般来说: