分发项目时包含外部 Python 模块的最佳方式是什么?

What is the best way to include external Python modules when distributing a project?

我正在为一个完全不懂编程的朋友编写一个简单的脚本。我的脚本使用了几个通过 pip 从外部源安装的库(请求、BeautifulSoup 等)。我想将我的脚本发送给我的朋友,他的设置尽可能少,但无法弄清楚如何将这些外部库包含在存储库中。是否有 'proper' 或最佳方式来打包这些库,以便脚本的用户不必手动安装它们?

我研究过使用 venv 或 setup.py 文件,但我不确定这两种方法是否合适或如何实施这些解决方案。

我不知道用你的脚本打包依赖项的方法。

但是,确保您的朋友拥有所有依赖项的一种简单方法是创建一个 requirements.txt,在其中列出所有要求(每行一个,如果需要,还有版本号)

例如,requirements.txt 可能如下所示:

requests
BeautifulSoup
numpy
matplotlib

然后运行:

pip install -r requirements.txt

我想说用户手动安装 packages/modules 是探索分布式项目时的常见做法。

然而,也许需求文件的概念在这里可能是相关的。

在将你的项目推送到你的 repo 之前(甚至之后也可以),在你的本地项目目录中 运行 一个 pip freeze 命令,例如:

pip freeze > requirements.txt

(或者它的一些变体,Google 如果那不起作用)

这将冻结 已安装模块的名称到名为 requirements.txt.

的文件中

当有人想要 运行 下载存储库时您项目中的任何代码时,他们可以使用

快速安装所有必要的包
pip install -r requirements.txt

阅读 Pip 文档 Here