In a way, os.environ is similar to setting a list: sys.append( 'D:/data/folder' ). Except that it is a list from a constant environment variable from the operating system instead of writing each data path. Though they do seem to be similar in practice but the os.eviron seem to have more flexible functionality: you can call each folder as a module you can access to. Let's say you have 3 files inside the D:/Data/Path/File system path: "Modules", "Systems" and "Utilities". And inside each of those folders are more files and python files, in this case, in file "Systems" I have a file called “Addons” and a python file called "utility" and I can access that file, and all other files without writing too much code.
For example:
In windows, you can set your environment variable by right-clicking My Computer > Properties > Advanced System Settings > Environment Variables. Click on New. You will get this window:
Variable Name:
Variable Value:
Set it to something like this:
Variable Name: MODULAR_PATH
Variable Value: D:\Data\Path\File
The variable value is your file path, just make sure to invert the slashes from " / " to " \ ."
Now that you have set your environment variable, you can go back to maya and type something like this:
import os
import maya.OpenMaya as om
import sys
try:
rootPath= os.environ[' MODULAR_PATH ']
except:
om.MGlobal.displayWarning( ' MODULAR_PATH is not in environment.' )
sys.exit()
else:
import sys
#print rootPath
if not rootPath in sys.path:
sys.path.append( rootPath )
print 'Systems path appended -- >', sys.path
import Systems.Addon.utility as util
reload( util )
util.run()
import Modules.testPyCode as tpc
reload( tpc )
tpc.runAll()
import Utilities.__init__A as init
reload(init)
init.initialize()
And so on and so forth. I believe this way is a much cleaner way to handle modules than by appending each directory to a list. My opinion.
P.S.
When I write python code, I always do 4 spaces for intentation.