我正在尝试为我的jenkins服务器编写一个清理脚本。没有进入太多细节,我想从每个docroot中的文件中获取一个变量,并在for循环中将其与某些内容匹配。从另一个python文件获取变量无需导入
所以,看似每一个谷歌的结果告诉我,我尝试添加的文档根目录到sys.path.append(文档根目录),然后用小鬼找到模块,采用
imp.find_module('python_vars')
from python_vars import git_branch
其导入并使用该变量。
这里的问题是,它适用于第一个,但它已经加载,并不会在循环中更改。所以我想在每次迭代的末端,除去从sys.path中的文档根目录,然后重新加载模块使用
reload('python_vars')
from python_vars import git_branch
下一个这给了我一个“重载()的参数必须是模块”。而
reload(python_vars)
from python_vars import git_branch
给我“NameError:名字‘python_vars’没有定义”
TBH,这似乎是一个可怕的方式做到这一点,是不是有一个更简单的方法来从文件中获取变量?
在php中,我只是在循环中执行一些类似 include(docroot)的操作,它会覆盖内存中的变量并完成操作。
下面是完整的循环,我完全知道它是垃圾,但我现在只是在尝试一些东西。
if os.path.exists(docroot):
sys.path.append(docroot)
# If docroot exists need to check if it is meant to
import imp
try:
imp.find_module('python_vars')
from python_vars import git_branch
remove_project = check_for_git_branch(docroot, git_branch)
except ImportError:
remove_project = True
print 'importerror'
try:
imp.find_module('python_vars')
reload(python_vars)
from python_vars import git_branch
except ImportError:
print 'nope'
sys.path.remove(docroot)
所以我不得不也许什么也不做登记,作为AR功能添加eference? –
@MichaelMallett不,只是导入模块,因为我告诉你。你能发布你的完整代码吗?你提到了一个循环,但是我没有在你发布的代码中看到一个循环。 –
啊道歉,当你说我需要获取一个参考时,我认为以你所处的方式传递变量的行为是在做某件特定的事情。因此,导入完整的文件,而不是变量,并将'check_for_git_branch(docroot,git_branch)'改成'check_for_git_branch(docroot,python_vars.git_branch)',然后重新加载就足够了? –