如何从Gradle激活虚拟环境?

2024-05-15 00:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的渐变。构建文件。在

exec {
        workingDir System.getProperty("user.dir")
        commandLine 'python3.6', 'buildscript.py'
    }
exec {
    workingDir System.getProperty("user.dir")
    commandLine 'python3.6', '-m', 'virtualenv', 'env'
}


exec {
    workingDir System.getProperty("user.dir")
    commandLine 'source', 'env/bin/activate'
}

exec {
    workingDir System.getProperty("user.dir")
    commandLine 'pip3.6', 'install', 'pybuilder'
}

exec {
    workingDir System.getProperty("user.dir")
    commandLine 'pyb', '-E', 'env', '-X'
}

这些都在执行gradle build时运行的构建任务中。 理论上,这应该运行我创建的一个脚本来创建构建python程序所需的所有文件,然后创建一个虚拟环境,激活它,安装pybuilder,然后运行pybuilder。但是,命令:

^{pr2}$

似乎失败了。它声称目录/文件不存在,尽管它通过命令行工作。我不知道为什么会这样。这样做的目的是强制Pybuilder将程序依赖项安装到我创建的虚拟环境中。从技术上讲,pyb-env应该为我激活虚拟环境,但不管出于什么原因,它没有将我的依赖项安装到该虚拟环境中。在我们的Jenkins节点上,这是一个问题,因为我们不希望这些安装在全局范围内,更不用说,我没有根用户权限。在

任何帮助都将不胜感激。如果您知道另一种让Pybuilder正常工作的方法,那也同样好。在


Tags: 文件程序envdir虚拟环境systemexeccommandline
2条回答

临时解决方案:我最终创建了一个小shell脚本来创建和激活虚拟环境。然后我执行了gradle的剧本。在

activate上调用source只是在执行shell魔术来连接变量。您不需要总是调用activate(在本例中可能不能)。相反,您应该在pip3.6pyb命令前面加上env/bin来直接调用二进制文件。因此,它将是

exec {
   workingDir System.getProperty("user.dir")
   commandLine 'env/bin/pip3.6', 'install', 'pybuilder'
}

exec {
   workingDir System.getProperty("user.dir")
   commandLine 'env/bin/pyb', '-E', 'env', '-X'
}

相关问题 更多 >

    热门问题