gradle与conda和pyenv的交互



我有一个简单的gradle任务,它由python执行一些部署工作。然而,它似乎在commandLine调用中使用了任意版本的python。

task deploy(type: Exec) {
dependsOn 'clean'
dependsOn 'build'
tasks.findByName('build').mustRunAfter 'clean'
workingDir "$buildDir/deploy/"
commandLine "which", "python3"
}

如预期的那样生成/Users/cchow/projects/<project>/venv/bin/python3。当我运行gradle命令时,我有一个激活的虚拟环境。

然而,下面产生了一些意想不到的

task deploy(type: Exec) {
dependsOn 'clean'
dependsOn 'build'
tasks.findByName('build').mustRunAfter 'clean'
workingDir "$buildDir/deploy/"
commandLine "python3", "-m", "yaml"
}

生成/usr/local/Caskroom/miniconda/base/bin/python3: No module named yaml。我确实安装了conda,但conda安装的优先级应该低于virtualenvs。根据env,通过commandLine "env"执行:

PATH=/Users/cchow/projects/<project>/venv/bin:/usr/local/Caskroom/miniconda/base/condabin:<rest of path>

为什么它会为前者选择虚拟环境py3,而为后者选择conda py3 ?

我也遇到过这个问题,并找到了一个解决方法:

project.exec  {
commandLine "sh", "-c", "python -m foo"
}

相关内容

  • 没有找到相关文章

最新更新