首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以从TCL激活和执行虚拟Python?

是否可以从TCL激活和执行虚拟Python?
EN

Stack Overflow用户
提问于 2022-04-25 17:47:56
回答 2查看 228关注 0票数 0

这是我执行的bash命令:

代码语言:javascript
运行
复制
  source ./virtualenv/Scripts/activate && cd ./deps/scripts && python generate_system_info.py

现在,我想在TCL脚本中运行它。我不知道如何才能做到这一点。

我知道TCL中的exec是必需的。但是,我不确定是否可以使用上面所示的方法从TCL中激活virtualenv。当我在TCL中调用&&时,我也不知道如何集成exec

我所努力达到的目标是否可能?

TCL外壳来自一个名为Xilinx的程序。

EN

回答 2

Stack Overflow用户

发布于 2022-04-25 18:15:49

来自文夫文档:

您不需要特别地激活环境;激活只是将虚拟环境的二进制目录添加到您的路径中,这样“Python”就可以调用虚拟环境的Python解释器,并且可以运行已安装的脚本,而不必使用它们的完整路径。但是,安装在虚拟环境中的所有脚本都应该可以在不激活它的情况下运行,并使用虚拟环境的Python自动运行。

因此,基本上activate只是替换了您的python脚本的路径(以及$PATH环境变量,至少在linux中是这样)。您可以使用完整/相对路径从virtualenv目录运行正确的python。

如果您挣扎于它所在的位置,您可以激活virtualenv并使用which命令查找它!

票数 1
EN

Stack Overflow用户

发布于 2022-04-25 17:55:04

如果没有其他的,您可以像这样执行整个管道:

代码语言:javascript
运行
复制
exec bash -c {source ./virtualenv/Scripts/activate && cd ./deps/scripts && python generate_system_info.py}

&&只是说“如果前面的命令成功了,继续到下一个命令”。因此,您可以在三个单独的行上执行这三个命令。问题是source命令。它需要在当前进程中设置环境变量,默认情况下,tcl会启动一个子set,当子set结束时,环境就会消失。您可以在tcl中设置本地环境变量,因此可能会选择将activate shell脚本转换为tcl命令。那你就可以

代码语言:javascript
运行
复制
activate.tcl
cd deps/scripts
exec python generate_system_info.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72003659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档