Additionally, and this might not apply to your situation until you have
more of a system in place but, many of the constants that you might be
interested in are best stored in some modular context. That is, you may
have a number of settings that really belong in your export package, for
instance. So instead of making them truely detached and "global" you can
put them in your export __init__. When you need to retrieve this value it
would then look something like the following:

## export.__init__

PROCESSOR_EXE = "someTool.exe"

---------------------------------------------------------------------------------------------------------------------------------
## Any other implementation file

import os
import subprocess
import parentPackage

processorPath = os.path.join( toolPath,
'bin', parentPackage.export.PROCESSOR_EXE )
if os.path.exists(processorPath):
    subprocess.Popen( processorPath, *localArgs... )

This will give your "global" variables/constants a meaningful scope. An
added benefit of doing this is the completion provided in most  IDEs worth
using. This may seem trivial, but it saves a lot of time when you have a
large system of packages working together and lots of settings per package.

For values that are not specific to a particular module, but are used by
the system in general, you can put them in parentPackage, or an equivalent.

-Judah


On Wed, Jan 25, 2012 at 1:38 PM, Justin Israel <[email protected]>wrote:

> I think that __main__ would be a very strange and unpredictable place to
> store shared data in your environment.
> If what you are after is a globals module to share settings, you could try
> something like this....
>
> ## testConstants.py ##
> BAR="foo"
>
> ## testScriptA.py ##
> import testConstants
>
> print "BAR=", testConstants.BAR
> testConstants.BAR = "blah"
> testConstants.FOO = "bar"
>
> ## testScriptB.py ##
> import testConstants
>
> print "BAR=",testConstants.BAR
> print "FOO=",testConstants.FOO
>
>
> # And when we try them out....
> >>> import testScriptA
>
> BAR= foo
>
>
> >>> import testScriptB
>
> BAR= blah
>
> FOO= bar
>
>
>
> Because modules are only imported once, importing your constants module in
> multiple scripts will all reference the same module. You can then access
> all the objects within that module.
>
>
>
>
> On Tue, Jan 24, 2012 at 3:45 AM, [email protected] <
> [email protected]> wrote:
>
>> Hi,
>>
>> I have a question regarding the storage of data in Maya that should be
>> available in all my python scripts.
>> I found the "__main__" class and added an (immutable) variable to it
>> in the userSetup.py file.
>>
>> With this setup I can access the variable in all my scripts.
>> Do some of you guys have experience with this? Is it ok to store data
>> in __main__ or does it have implications
>> I don't know?
>>
>> Thank you very much,
>>
>> cheers,
>>
>> --
>> Malte Dreschert
>> Senior Technical Artist @ Bigpoint
>>
>> --
>> view archives: http://groups.google.com/group/python_inside_maya
>> change your subscription settings:
>> http://groups.google.com/group/python_inside_maya/subscribe
>>
>
>  --
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings:
> http://groups.google.com/group/python_inside_maya/subscribe
>

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to