【发布时间】:2021-10-31 13:47:22
【问题描述】:
我希望使用 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
【问题讨论】:
标签: python virtualenv pyenv pip-tools pipx