Sharing package data across files

scottpakin1 at gmail.com scottpakin1 at gmail.com
Tue Jun 28 15:17:06 EDT 2016


I'm trying to create a package in which the constituent files share some state.  Apparently, I don't understand scopes, namespaces, and package semantics as well as I thought I did.  Here's the directory structure for a simplified example:

   example/
     __init__.py
     vars.py
     funcs.py

vars.py defines a single variable:

    foo = 123

funcs.py defines a function that reads and writes that variable:

    def bar():
        global foo
        foo += 1
        return foo

__init__.py exposes both of those to the caller:

    from vars import foo
    from funcs import bar

Alas, it seems the bar function does not reside in the same global scope as the foo variable:

    >>> from example import foo, bar
    >>> foo
    123
    >>> bar()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "example/funcs.py", line 3, in bar
        foo += 1
    NameError: global name 'foo' is not defined

How can I make the example package work like one integrated module even though in reality it's split across multiple files?

Thanks,
-- Scott


More information about the Python-list mailing list