如何在项目中管理Python依赖?

0 投票
2 回答
897 浏览
提问于 2025-04-18 18:55

假设有个开发者在做一个项目的时候,发现需要用到某个软件包。他就用pip来安装这个软件包。安装完之后,这个开发者会把它写进requirements文件或者setup.py里,作为项目的依赖吗?

如果这个开发者忘记把项目的所有依赖都写下来(或者因为经验不足,不知道要写),那他该怎么办呢?

我想问的是,使用PyPi上外部软件包时,通常的工作流程是什么样的?

2 个回答

1

这要看你在做什么项目。

如果你在开发一个库(也就是别人可以用的代码),你应该把依赖的库写在 setup.py 文件里。这样的话,当你把这个库放到 PyPi 上时,别人安装的时候就能自动安装这些依赖。

如果你是在做一个 Python 应用(可能是个网页应用),那么用 requirements.txt 文件会更方便。你可以把所有代码复制到需要的地方,使用 virtualenv 或 pyvenv 创建一个虚拟环境,然后运行 pip install -r requirements.txt 来安装依赖。(其实在开发的时候也应该这样做,这样就不会在全局环境里搞得一团乱了)。

在你安装完包后,立刻把它们写进 requirements.txt 文件里,肯定比到最后再去想需要哪些包要简单得多。我通常的做法是先把包写到文件里,然后再用 pip install -r 来安装。

如果你忘了自己安装了哪些包,pip freeze 可以帮你找出来,但你还是应该查看它生成的文件,确保里面的东西你都需要。如果你使用 virtualenv,结果会比在全局环境中安装要好。

4

这个命令:

pip freeze > requirements.txt 

会把你当前Python环境中所有的依赖项(也就是你安装的库)复制到一个叫做requirements.txt的文件里。你可以在这里了解更多信息:http://pip.readthedocs.org/en/latest/reference/pip_freeze.html

撰写回答