just making sure: D:\pipeline_tools\python\site-packages\pymel_1.0.0rc2 has
the pymel *and* maya directories below it?
-chad
On Apr 13, 2010, at 7:21 AM, David Shaw wrote:
> Hey everyone,
>
> Thank you for your insights on the sitecustomize setup.
>
> Bare with a new comer to python here and if anyone has the time to help
> explain the problem I get.
>
> My intention was to just have it detect Maya's version and whether 32 or
> 64bit to load or not load appropriate packages.
> In the case of Maya 2011 NOT install our server pymel package (although with
> Its 1.0 release today that may be moot)
> [I assume inserting it before the internal version overrides it?]
>
> But to my problem :).....
>
> It seems if I try and access anything Maya related at this early stage bad
> things happen :)
> Printing the lines Paul gave me to try when in the sitecustomize.py file
> gives the appropriate values I need
>
> apiVerNum = MGlobal.apiVersion() and verString = MGlobal.mayaVersion()
>
> (201100 and 2011 respectively)
>
> If I use the MGlobal to query the maya version and do a check if its Maya
> 2011 so we do NOT install the pymel package for that version of Maya
> I get the following error:
>
> from pymel.all import *
> # Error: AssertionError: assert hasattr(maya.utils, 'shellLogHandler'), "If
> you manually installed pymel, ensure " \: If you manually installed pymel,
> ensure that pymel comes before Maya's site-packages directory on PYTHONPATH /
> sys.path. See pymel docs for more info. #
>
> If you look at the path outputs below pymel does show before the Maya packages
>
> But if I comment out the anything that calls Maya and replace it with
> mayaVersion = '2011' pymel imports just fine.
> The path output is identical.
>
> The Path after running the new sitecustomize.py script looks like: (Maya 2010
> version) [The maya 2011 version just doenst have the bolded pymel_1.0.0rc2
>
> Post Path: D:\pipeline_tools\python\site-packages\pyodbc-2.1.7
> Post Path: D:\pipeline_tools\python\site-packages\pymel_1.0.0rc2
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\bin
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\bin\python26.zip
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python\DLLs
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python\lib
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python\lib\plat-win
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python\lib\lib-tk
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python
> Post Path: I:\Program Files (x86)\Autodesk\Maya2010\Python\lib\site-packages
>
> This is the sitecustomeize.py that doesn't work [excuse any noob things if I
> am doing things the long way]
> import sys
> import os
> import re
> from maya.OpenMaya import MGlobal
>
> for p in sys.path: print ('Pre Path: ' + p)
>
> apiVerNum = MGlobal.apiVersion()
> verString = MGlobal.mayaVersion()
> mayaVersion = str(verString)
>
> path = os.environ.get ("PYTHON_SITEPACKAGES")
> if(os.path.exists(path)):
> sitePackages = os.listdir(path)
> packagesToInsert = sitePackages[:] #duplicate the list so we can remove
> any packages we don't want to insert
>
> for package in sitePackages:
> if mayaVersion == '2011':
> pymelMatch = re.match('pymel', package)
> if pymelMatch:
> packagesToInsert.remove(package)
>
> for insertPackage in packagesToInsert:
> sitePath = os.path.join(path, insertPackage)
> realPath = os.path.realpath(sitePath)
> print '*** Inserting package: %s from path: %s' % (insertPackage,
> realPath)
> sys.path.insert(0,realPath)
> else:
> print "DEV: Site packages path does not exist in Maya.env - skipping"
>
> for p in sys.path: print ('Post Path: ' + p)
>
> This is the sitecustomeize.py that does work [excuse any noob things if I am
> doing things the long way]
> import sys
> import os
> import re
> #from maya.OpenMaya import MGlobal
>
> for p in sys.path: print ('Pre Path: ' + p)
>
> #apiVerNum = MGlobal.apiVersion()
> #verString = MGlobal.mayaVersion()
> mayaVersion = '2011'
>
> path = os.environ.get ("PYTHON_SITEPACKAGES")
> if(os.path.exists(path)):
> sitePackages = os.listdir(path)
> packagesToInsert = sitePackages[:] #duplicate the list so we can remove
> any packages we don't want to insert
>
> for package in sitePackages:
> if mayaVersion == '2011':
> pymelMatch = re.match('pymel', package)
> if pymelMatch:
> packagesToInsert.remove(package)
>
> for insertPackage in packagesToInsert:
> sitePath = os.path.join(path, insertPackage)
> realPath = os.path.realpath(sitePath)
> print '*** Inserting package: %s from path: %s' % (insertPackage,
> realPath)
> sys.path.insert(0,realPath)
> else:
> print "DEV: Site packages path does not exist in Maya.env - skipping"
>
> for p in sys.path: print ('Post Path: ' + p)
>
> The Maya.env variable PYTHON_SITEPACKAGES =
> D:\pipeline_tools\python\site-packages\
>
> with the following folders in D:\pipeline_tools\python\site-packages\:
> pymel_1.0.0rc2
> pyodbc-2.1.7
>
> Anyway hopefully all that makes some sense and points the way to why it didnt
> work :)
>
> Dave
>
> --
> http://groups.google.com/group/python_inside_maya
--
http://groups.google.com/group/python_inside_maya
To unsubscribe, reply using "remove me" as the subject.