gradle 与 conda 和 pyenv 的交互
gradle interactions with conda and 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 命令时,我有一个 virtualenv 处于活动状态。
但是,下面会产生意想不到的结果
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>
为什么前者选择 virtualenv py3 而后者选择 conda py3?
我也遇到过这个问题,并找到了解决方法:
project.exec {
commandLine "sh", "-c", "python -m foo"
}
我有一个简单的 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 命令时,我有一个 virtualenv 处于活动状态。
但是,下面会产生意想不到的结果
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>
为什么前者选择 virtualenv py3 而后者选择 conda py3?
我也遇到过这个问题,并找到了解决方法:
project.exec {
commandLine "sh", "-c", "python -m foo"
}