【问题标题】:Managing contents of requirements.txt for a Python virtual environment管理 Python 虚拟环境的 requirements.txt 的内容
【发布时间】:2017-01-17 06:51:51
【问题描述】:
所以我正在从头开始创建一个全新的 Flask 应用程序。和所有优秀的开发人员一样,我的第一步是创建一个虚拟环境。
我在虚拟环境中安装的第一件事是Flask==0.11.1。 Flask 安装了以下依赖项:
- 点击==6.6
- 其危险==0.24
- Jinja2==2.8
- MarkupSafe==0.23
- Werkzeug==0.11.11
- wheel==0.24.0
现在,我创建了一个 requirements.txt 以确保克隆存储库的每个人都拥有相同版本的库。然而,我的困境是这样的:
- 我是否在 requirements.txt 中提到了每个 Flask 依赖项以及版本号
或
- 我只是在 requirements.txt 中提及确切的 Flask 版本号,并希望当他们执行 pip install requirements.txt 时,Flask 会处理依赖管理,他们将下载正确版本的依赖库
【问题讨论】:
标签:
python
pip
virtualenv
requirements.txt
【解决方案1】:
这里的一件好事是您正在使用 virtualenv,这将使您的任务变得非常容易。
-
激活 virtualenv ($source path_to_virtualenv/bin/activate)
-
进入你的项目根目录
-
在 requirements.txt 中获取所有包以及依赖项
pip freeze > requirements.txt
-
除了确保下一个人通过以下命令递归安装需求之外,您不必担心其他任何事情
pip install -r requirements.txt
【解决方案2】:
这两种方法都有效且有效。但是有一点区别。当您在requirements.txt 中输入所有依赖项时,您将能够固定它们的版本。如果您将它们排除在外,则可能会有稍后的更新,并且如果 Flask 在其依赖项中有类似 Werkzeug>=0.11 的内容,您将安装更新版本的 Werkzeug。
所以它归结为更新与定义的环境。哪个更适合你。
【解决方案3】:
您可以(从您的活动虚拟环境中)执行以下操作
pip freeze > requirements.txt
它将自动处理您项目中可用的所有库/模块。
下一个开发者只需发布:
pip install -r requirements.txt
【解决方案4】:
如果您只想查看已安装的软件包,请执行
pip freeze。
但是如果你想要在你的requirements.txt中所有这些包,那么做
pip freeze > requirements.txt