python - 如何使用环境模块文件(tcl 脚本)加载 virtualenv?

标签 python tcl virtualenv modulefile

我正在尝试为创建 python virtualenv 的程序编写模块文件。为了启动virtualenv,需要先运行/programs/program-env/bin/activate。我如何在 modulefile 中执行此操作? 任何帮助将不胜感激。

注意:我尝试将上面的行放入文件中,但没有成功。

谢谢,

编辑:

我正在写一个 modulefile加载只能在 virtualenv 中运行的程序。通常这些模块文件将设置变量名称和/或将 bin 目录添加到路径。由于上面的包有些不同,我不知道如何进行。可以找到示例模块文件 here .

最佳答案

这是一个稍微更完整的答案,建立在 Donal 和 betapatch 的答案之上,它允许您在执行类似操作的两个模块之间切换:

if { [module-info mode load] || [module-info mode switch2] } {
    puts stdout "source /programs/program-env/bin/activate;"
} elseif { [module-info mode remove] && ![module-info mode switch3] } {
    puts stdout "deactivate;"
}

首先,您需要使用 source .../activate 而不仅仅是 .../activate

其次,modulesswapping 模块时有一些可怕的逻辑。如果你想module swap foo bar(删除foo并加载bar),它实际上做了以下事情:

foo: switch1 # prep for remove
foo: remove  # actually remove
bar: switch2 # load new module
foo: switch3 # cleanup
foo: remove  # happens at the same time as foo switch3

这意味着如果 foobar 都是使用 virtualenvs 的模块文件,第二个 foo remove停用

关于python - 如何使用环境模块文件(tcl 脚本)加载 virtualenv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885134/

相关文章:

python - GCM python 服务器端实现 : Error=MissingRegistration

python - 再次出现在 Python 中的非 ascii 字符

multithreading - "RuntimeError: Calling Tcl from different appartment"tkinter 和线程

python-3.x - 如何使用包含 python3 解释器的 virtualenv 打包 pyspark 代码?

docker - 使用 distroless 基础镜像构建多阶段 docker 镜像会导致 "no such file or directory"错误

python - virtualenv安装SSL错误: The read operation timed out

python - 递归列表更新错误[网格中的机器人] Python

python - 替换嵌套字典中的空字典

tcl - 如何从TCL控制台在ModelSim/QuestaSim中执行 'Zoom Fit'?

string - 如何在 TCL 中将字符串拆分为单词列表,忽略多个空格?