使用fabric将模块文件放在远程服务器上

时间:2013-01-29 23:44:35

标签: python fabric

我正在编写一个结构文件,它将获取数据集,将其发送到服务器,在其上运行分析脚本,并检索结果。如果我硬编码我的脚本位置process_script,我一切都很好。但是,我想将脚本作为文件包含在模块中,因此希望能够访问该文件而无需对该位置进行硬编码。我可以使用导入系统吗?我不确定。这是我想要做的工作版本:

#data, script
datafile       = 'data.txt' 
process_script = 'process.py'

#simple function    
def upload_and_run():
    newdir = remote_dir + '/process_temp'
    put(datafile, newdir)
    put(process_script, newdir)
    with cd(newdir):
        run('python2.6 process.py {0}'.format(datafile))
    get(newdir,'%(path)s')

#pseudocode of how I'd like to access the process_script
process_script = from module import script
put(process_script, newdir)

任何建议表示赞赏, 谢谢, zach cp

1 个答案:

答案 0 :(得分:0)

根据thisthis,我可以使用模块的.__file__属性访问模块路径。然后使用该路径对脚本进行硬编码。

import os
path = os.path.dirname(my_module.__file__)
process_script = path+ 'process.py'
put(process_script)