全局变量在 Django shell 中不起作用



今天,当我在"python management .py shell"中做一些测试时,全局变量不能被引用,见:


In [9]: import subprocess as s
In [10]: def test():
    global s
    f = s.check_output('ls /tmp', shell=True)
    return f
   ....: 
In [11]: test()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 test()
/usr/local/lib/python2.7/dist-packages/django/core/management/commands/shell.pyc in test()
      1 def test():
      2     global s
----> 3     f = s.check_output('ls /tmp', shell=True)
      4     return f
**NameError: global name 's' is not defined**

我试图引用的每个全局变量都面临相同的错误。但是把代码放到views.py中,它可以工作....我怎么能修复django shell?

我在python 2.6和django 1.3中尝试了等效的代码,它工作得很好。并不是说你会悲观,但至少这可能是一个线索。此外,如果您只是使用s,那么您不需要在函数中使用全局声明。我想你只有在修改s时才需要这个。

In [60]: import subprocess as s
In [61]: def test():
    global s
    f = s.check_call('ls /tmp', shell=True)
    return f
   ....:
In [65]: test()
Out[65]: 0

相关内容

  • 没有找到相关文章

最新更新