我正在构建一个复杂的Python应用程序,以最大化支持不同的库为目标,其中一些是使用几个千兆字节的机器学习库。我现在准备发布这个项目,但我意识到构建大小非常庞大,其中99%不是我的代码,而且其中一些可能永远不会被用户调用。
我希望能够让用户下载一个具有最小依赖关系的发布版本,如果他们选择在GUI中使用其他依赖关系,可以在运行时提示并安装它们,甚至可以使用pyinstaller重新构建应用程序。
我并不期望所有的用户都是开发人员,所以只有一个可配置的构建脚本并不是最好的选择,而且我也不想发布多个版本。
我描述的这种情况在Python中是否可行,是否是一种常见的模式?我应该如何实现这样的功能?
如果这个问题更适合在软件工程堆栈交流,我可以将它转移到那里。
编辑: 我的一些软件包只适用于Linux或Windows。我想将我的项目发布为一个可移植的可执行文件,类似于PyInstaller。我不希望我的用户需要理解如何管理
我希望能够让用户下载一个具有最小依赖关系的发布版本,如果他们选择在GUI中使用其他依赖关系,可以在运行时提示并安装它们,甚至可以使用pyinstaller重新构建应用程序。
我并不期望所有的用户都是开发人员,所以只有一个可配置的构建脚本并不是最好的选择,而且我也不想发布多个版本。
我描述的这种情况在Python中是否可行,是否是一种常见的模式?我应该如何实现这样的功能?
如果这个问题更适合在软件工程堆栈交流,我可以将它转移到那里。
编辑: 我的一些软件包只适用于Linux或Windows。我想将我的项目发布为一个可移植的可执行文件,类似于PyInstaller。我不希望我的用户需要理解如何管理
venv
或系统Python版本。我可以理解制作另一个软件,通过安装和构建程序来管理自己的Python版本、venv
和可执行文件,就像安装的系统软件包一样。这样一个复杂而繁琐的解决方案是否有必要来处理这个问题?
extras_require
来添加可选依赖项。请参考https://stackoverflow.com/search?q=%5Bsetuptools%5D+optional+dependencies。 - undefinedpip
是错误的标签。pip
/setuptools
无法做到这一点,您需要编写自己的安装程序。 - undefined