2012-11-08 27 views
0

访问变量我有以下结构 -从顶部级封装

invoize/ 
    __init__.py 
    globals.py 
    view/ 
     __init__.py 
     tags.py 

globals.py包含一个称为应用程序的变量。

  1. 我想从tags.py中访问该变量。
  2. 我想修改它,使其状态得到全球反映(不只是本地参考)。

如何从tags.py访问变量app以实现上述目标?

感谢, 穆尔塔扎

+0

define _state gets reflectedly_ ... – moooeeeep

回答

4

使用relative import

from ..invoize import globals 
print globals.app 
globals.app = True 

请注意,这个工作:

  1. 你需要一个__init__.py在顶层,沿着viewinvoize

  2. 您需要从包装外部导入tags(您将无法进入view文件夹并运行python tags.py

+0

这是我收到的错误 - 文件“/home/murtaza/workspace/flask/invoize/view/tags.py”,第1行,在 from ..invoize import globals ValueError:尝试超出顶层包的相对导入 – murtaza52

+0

您是否在'invoize'和'view'旁边包含'__init __。py'文件,并从包外部导入? –

+0

我已经在问题中显示的文件夹结构中进行了编辑。我有__init__。py在两个文件夹中。我试图从子包中导入父包中的模型。你能帮我吗 ? – murtaza52

1

您是否尝试编辑PYTHONPATH环境变量以包含“/ invoize /”目录?

这是我如何去你的问题:

[GP @ imdev1/TESTDIR/invoize /视图]出口PYTHONPATH = $ PYTHONPATH:/ TESTDIR/

[GP @ imdev1/TESTDIR/invoize /视图]回声$ PYTHONPATH /opt/python3/lib/python3.3/selenium/webdriver/support/:/opt/python3/lib/python3.3/selenium/webdriver/ie/:/testdir/

在/testdir/invoize/globals.py:

app = 'murtaza52' 

在/testdir/invoize/view/tags.py:

import invoize.globals

print invoize.globals.app

invoize.globals.app += ' newvalue'

print invoize.globals.app

[GP @ imdev1/TESTDIR/invoize /视图] $蟒tags.py

murtaza52

murtaza52 NEWVALUE