使用pipenv在jenkins上运行unittest花费的时间太长
我们从pip迁移到pipenv 我认为pipenv很棒,但是遇到了一个问题 我们使用git webhook对jenkins的每次推送都运行单元测试。使用pip时,我们有一个虚拟环境,在运行测试之前,我们会激活它并安装requiremnets.txt文件 这是相当快的,pip将运行已经满足的需求网,并且只在添加依赖项时安装依赖项 有了Pipenv,我在repo的根目录中有了Pipfile和Pipfile.lock,运行使用pipenv在jenkins上运行unittest花费的时间太长,jenkins,pip,pipenv,Jenkins,Pip,Pipenv,我们从pip迁移到pipenv 我认为pipenv很棒,但是遇到了一个问题 我们使用git webhook对jenkins的每次推送都运行单元测试。使用pip时,我们有一个虚拟环境,在运行测试之前,我们会激活它并安装requiremnets.txt文件 这是相当快的,pip将运行已经满足的需求网,并且只在添加依赖项时安装依赖项 有了Pipenv,我在repo的根目录中有了Pipfile和Pipfile.lock,运行Pipenv install似乎每次都在重新创建环境,而且需要很长时间 对我们来
Pipenv install
似乎每次都在重新创建环境,而且需要很长时间
对我们来说,这可能是一个阅读交易的破坏者
是否有任何变通方法可以加快与pipenv的合作
以前的shell脚本(在jenkins工作中)类似于:
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv activate romee
pip install -r requirements.txt
pip install -r requirements-dev.txt
python tests.py
使用pipenv:
pipenv install
pipenv install --dev
pipenv run python run_tests.py
听起来您的旧安装程序保留了虚拟环境和以前的
pip
安装包,而您的新pipenv
安装程序没有
默认情况下,pipenv
在生成区域之外创建一个虚拟环境,并使用到生成区域的完整路径的散列作为名称的一部分。生成区域外的目录没有在各个生成之间保留,或者每次生成运行时生成区域目录路径都不同(每次都会导致新的虚拟环境)
我建议在运行pipenv
之前进行设置。使用此设置,您的构建将更像旧的构建,在构建目录树中包含virtualenv。像这样:
export PIPENV_VENV_IN_PROJECT=1
pipenv install --dev
pipenv run python run_tests.py
(另外,无需运行
pipenv安装
,pipenv安装--dev
将安装主软件包以及仅适用于开发人员的软件包。)“pipenv安装似乎每次都在重新创建环境”-这很奇怪。您能运行pipenv安装--verbose
并显示日志中的内容吗?输出非常大!有什么特别的吗?