【问题标题】:Getting pipenv working in a Virtualenv where the App is working让 pipenv 在应用程序工作的 Virtualenv 中工作
【发布时间】:2019-05-07 13:05:29
【问题描述】:
我的 Django 应用程序在 Virtualenv 中工作。
我想切换到 pipenv。但是, pipenv 安装失败并出现依赖错误。
鉴于该应用程序正在运行,我猜所有的库都在 Virtualenv 中。
当通过 Virtualenv + pip 让应用程序工作时,我必须解决库依赖关系,但能够并让它工作。迁移到 pipenv 背后的想法是避免多成员团队设置中的依赖问题。
有没有办法告诉 pipenv 只使用 virtualenv 中的库版本并继续使用它?
【问题讨论】:
标签:
pip
virtualenv
pipenv
【解决方案1】:
如果您有setup.py 文件,您可以使用pipenv install . 安装它。或者更好的是,使其成为可编辑的开发依赖项:pipenv install -e . --dev。
您还可以从 requirements.txt 文件创建 Pipfile/虚拟环境。所以你可以做一个 pip freeze ,然后从需求文件中安装。
冻结您的依赖项
从您的工作应用虚拟环境中,将您的依赖项导出到需求文件。
pip freeze > frozen-reqs.txt
然后使用 pipenv 创建一个新的虚拟环境,并从冻结的需求中安装。
pipenv install -r frozen-reqs.txt
然后进入Pipfile 并开始删除除顶级依赖项之外的所有内容,然后重新锁定。此外,尽可能避免固定需求,因为这会使依赖关系解析变得更加困难。
您可以使用pipenv graph 和pipenv graph --reverse 来帮助解决这个问题。