2011-03-24 87 views

回答

14

我知道这个问题有点老了,但它仍然是不够有关,我一直在寻找的答案,所以我张贴了我发现的作品,以及:

至少在3.2.9+源,可以包括蟒蛇“初始化”文件,以获得模块的Python函数的版本:

>>> execfile('/usr/local/Modules/default/init/python.py') 
>>> module('list') 
No Modulefiles Currently Loaded. 
>>> module('load','foo') 
>>> module('list') 
Currently Loaded Modulefiles: 
    1) foo/1.0 

我曾被告知早期版本可以做到没有.py扩展名,但这是第二手,所以ymmv。

+0

这更接近我们实际使用的东西(因为对'modulecmd'的'popen'调用位于您引用的'python.py'文件中),所以我会将其设置为答案。谢谢! – 2013-08-20 01:07:41

+0

我几乎心脏病发作了!非常感谢你。 – yvesonline 2013-10-30 15:53:07

+4

在我使用的服务器中是/usr/share/Modules/init/python.py。我发现路径正在运行模块 - 版本(正确的条目似乎MODULES_INIT_DIR) – lib 2015-02-13 07:54:35

0

不是直接的,但根据您的环境,这里有一种可能的解决方法。假设你可以用ENVVAR=value前言系统命令,你可以做一些沿着这些路线:

import os 
os.environ['EDITOR'] = 'vi' 
cmd = "EDITOR=%(EDITOR)s $EDITOR" % os.environ 
os.system(cmd) 

代码分配你的EDITOR环境变量,然后通过在命令行上运行命令, (在这种情况下)是EDITOR。

3

一个我们的管理员能够使用os.popen()电话来解决问题对我来说,modulecmd

cmd = os.popen('/path/to/modulecmd python load my-module') 
exec(cmd)