从顶级包访问变量

时间:2012-11-08 08:40:55

标签: python

我有以下结构 -

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

globals.py包含一个名为app的变量。

  1. 我想从tags.py。
  2. 访问该变量
  3. 我想修改它以使其状态全局反映(而不仅仅是本地引用)。
  4. 如何从tags.py访问变量 app 以实现上述目标?

    谢谢, 穆尔塔扎

2 个答案:

答案 0 :(得分:4)

使用relative import

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

请注意,要使其正常工作:

  1. 您需要在顶级__init__.py旁边viewinvoize

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

答案 1 :(得分:1)

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

以下是我如何处理您的问题:

[gp @ imdev1 / testdir / invoize / view] export PYTHONPATH = $ PYTHONPATH:/ testdir /

[gp @ imdev1 / testdir / invoize / view] echo $ PYTHONPATH /opt/python3/lib/python3.3/selenium/webdriver/support /中:/ opt / python3 / LIB / python3.3 /硒/ webdriver的/ IE /:/ TESTDIR /

在/testdir/invoize/globals.py中:

app = 'murtaza52'

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

  

导入invoize.globals

     

print invoize.globals.app

     

invoize.globals.app + ='newvalue'

     

print invoize.globals.app

[gp @ imdev1 / testdir / invoize / view] $ python tags.py

murtaza52

murtaza52 newvalue