我希望使用 pip-tools 将我的需求文件分为开发(requirements-dev.txt)和生产(requirements.txt)。
我已经使用 pipx 安装了 pip-tools,因为我希望它在全球范围内可用但被隔离。但是,这样做会导致我的依赖项由 pip-tools 安装在 pip-tools 本身的虚拟环境中,而不是激活的虚拟环境中。
我不知道这是否是一个因素,但我也在使用 pyenv 来管理我的 python 版本,但全局只安装了一个(非系统)版本。
给定我的环境(即使用 pipx 安装的 pip-tools,由 pyenv 管理的 python),我如何在激活的虚拟环境pip-sync
中安装依赖项?
这是我重现这一点的工作流程:
# Install pip-tools globally
pipx install pip-tools
# Create a virtual environment and activate it
python -m venv venv
source venv/bin/activate
# Create prod/dev requirement input files (see below for content)
# Autogenerate requirement files
pip-compile requirements.in
pip-compile requirements-dev.in
# Install all dependencies
pip-sync requirements.txt requirements-dev.txt
# Check what is installed (outputs nothing)
pip freeze
# Check what is installed in pip-tools virtual env
~/.local/pipx/venvs/pip-tools/bin/python -m pip freeze
# output shows flask, pytest, and their dependencies
生产依赖文件
# requirements.in
flask
开发依赖文件
# requirements-dev.in
-c requirements.txt
pytest