我正在尝试为创建 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
。
其次,modules
在swap
ping 模块时有一些可怕的逻辑。如果你想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
这意味着如果 foo
和 bar
都是使用 virtualenvs 的模块文件,第二个 foo remove
将停用
栏
。
关于python - 如何使用环境模块文件(tcl 脚本)加载 virtualenv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885134/