我有一個簡單的 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?
uj5u.com熱心網友回復:
我也遇到過這個問題,并發現這是一種解決方法:
project.exec {
commandLine "sh", "-c", "python -m foo"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/331206.html
下一篇:在shell腳本中呼叫鏈碼函式
