python - 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 命令时,我有一个激活的 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"
}
推荐阅读
- javascript - 无法让我的 create-react-app 在 heroku 上呈现
- elasticsearch - 如何匹配多个单词?
- python - 简单的 pandas 合并有意想不到的结果 - 获取数据结构但不是预期的数据
- android - 我的 Andoid 应用程序无法在手机上运行并显示消息“bookhub 已停止”?我试图将我的应用程序连接到互联网
- python - 为已发布的包供应 python 包
- arrays - Numpy 系列中的模式
- elasticsearch - 聚合中位数/均值查询
- python-3.x - 如何将没有标题的 csv 输入 python 函数 - 函数返回 0
- python - 在 Docker pipenv 上安装 psycopg-binary,得到错误在系统上找不到 Python 3.8
- python - 如何使用 Python 格式化 Hubspot API 的日期值