Search code examples
pythonmayapymel

How do I import PyMEL core?


I am importing maya.standalone, initializing it, and then importing pymel.core as pmc into my Maya Python interpreter, which is running in powershell. At this point I get a lot of warnings. After when I call: xform, shape = pmc.polysphere(), I get the warning: name 'xform' is not defined

This is the output from the pymel import

> Warning: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/initialStartup.mel line 195:
> Y-axis is already the Up-axis Initialized VP2.0 renderer {   Version :
> 6.3.16.0. Feature Level 5.   Adapter : Intel(R) HD Graphics 4600   Vendor ID: 32902. Device ID : 1046   Driver :
> nvwgf2umx.dll:9.18.13.5306.   API : DirectX V.11.   Max texture size :
> 16384 * 16384.   Max tex coords : 32   Shader versions supported
> (Vertex: 5, Geometry: 5, Pixel 5).   Active stereo support available :
> 0   GPU Memory Limit : 2080 MB.   CPU Memory Limit: 15472.7 MB. }
> OpenCL evaluator is attempting to initialize OpenCL. Detected 2 OpenCL
> Platforms:  0: Intel(R) Corporation. Intel(R) OpenCL. OpenCL 1.2 . 
> Supported extensions: cl_intel_dx9_media_sharing
> cl_khr_byte_addressable_store cl_khr_d3d11_sharing
> cl_khr_dx9_media_sharing cl_khr_gl_sharing
> cl_khr_global_int32_base_atomics cl_khr_global
> _int32_extended_atomics cl_khr_icd cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics  1: NVIDIA Corporation. NVIDIA
> CUDA. OpenCL 1.2 CUDA 7.5.8.  Supported extensions:
> cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing
> cl_nv_compiler_options cl_nv_device_attribute_query
> cl_nv_pragma_unroll cl_nv_d3d9_sharing cl_nv_d3d10_shari ng
> cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts OpenCL
> evaluator choosing OpenCL platform Intel(R) Corporation. Choosing
> OpenCL Device Intel(R) HD Graphics 4600.  Device Type: GPU  Device is
> available. OpenCL device does not support out of order execution
> 
> Error: file: C:/Program
> Files/Autodesk/Maya2016/plug-ins/xgen/scripts/igInitialize.mel line
> 63: ImportError: file <maya console> line 1: No module named xgenm
> Error: Unable to execute igInitialize.mel. Unable to execute
> igInitialize.mel.Error: line 0: ImportError: file <maya console> line
> 1: No module named xgenm Error: Unable to execute xgen.mel. Unable to
> execute xgen.mel.xgmNurbsPatch [u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u'xgmP atch',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmNurbsPatch'] pymel.internal.apicache : WARNING
> : lineage for node xgmNurbsPatch is cyclical: [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u's urfaceShape', u'THsurfaceShape', u'xgmPatch',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u' xgmNurbsPatch'] xgmSubdPatch [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u'xgmPatch',
> u'containerBase', u'e ntity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmSubdPatch'] pymel.internal.apicache : WARNING
> : lineage for node xgmSubdPatch is cyclical: [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'su rfaceShape', u'THsurfaceShape', u'xgmPatch',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'x gmSubdPatch'] xgmArchiveGuide
> [u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmGuide', u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape',
> u'xgmArchiveGuide'] pymel.internal.apicache : WARNING : lineage for
> node xgmArchiveGuide is cyclical: [u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u 'surfaceShape', u'THsurfaceShape', u'xgmGuide',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmArchiveGuide'] xgmCardGuide [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u'xgmGuide',
> u'containerBase', u'e ntity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmCardGuide'] pymel.internal.apicache : WARNING
> : lineage for node xgmCardGuide is cyclical: [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'su rfaceShape', u'THsurfaceShape', u'xgmGuide',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'x gmCardGuide'] xgmSphereGuide [u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u'xgmGuide',
> u'containerBase', u 'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmSphereGuide'] pymel.internal.apicache :
> WARNING : lineage for node xgmSphereGuide is cyclical:
> [u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u' surfaceShape',
> u'THsurfaceShape', u'xgmGuide', u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u
> 'xgmSphereGuide'] xgmSplineGuide [u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u'xgmGuide',
> u'containerBase', u 'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u'surfaceShape',
> u'THsurfaceShape', u'xgmSplineGuide'] pymel.internal.apicache :
> WARNING : lineage for node xgmSplineGuide is cyclical:
> [u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'deformableShape', u'controlPoint', u' surfaceShape',
> u'THsurfaceShape', u'xgmGuide', u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'deformableShape',
> u'controlPoint', u'surfaceShape', u'THsurfaceShape', u
> 'xgmSplineGuide'] AbcExport v1.0 using Alembic 1.5.4 (built May  8
> 2014 13:47:10) Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file <maya console> line 1: No module named
> mtoa.lightFilters
> 
> API error detected in plugins\mtoa\extension\PxMayaNode.cpp at line
> 222 : (kFailure): Unexpected Internal Failure Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file <maya console> line 1: No module named
> mtoa.lightFilters
> 
> API error detected in plugins\mtoa\extension\PxMayaNode.cpp at line
> 222 : (kFailure): Unexpected Internal Failure Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file <maya console> line 1: No module named
> mtoa.lightFilters
> 
> API error detected in plugins\mtoa\extension\PxMayaNode.cpp at line
> 222 : (kFailure): Unexpected Internal Failure Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file <maya console> line 1: No module named
> mtoa.lightFilters
> 
> API error detected in plugins\mtoa\extension\PxMayaNode.cpp at line
> 222 : (kFailure): Unexpected Internal Failure 00:00:00   359MB ERROR  
> | [mtoa] [xgenTranslator] Could not find xgen_procedural in search
> path $ARNOLD_PLUGIN_PATH Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file <maya console> line 1: No module named
> mtoa.api.extensions
> 
> API error detected in plugins\mtoa\extension\ExtensionsManager.cpp at
> line 571 : (kFailure): Unexpected Internal Failure Error: file:
> C:/Program Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel
> line 46: ImportError: file <maya console> line 1: No module named
> mtoa.api.extensions
> 
> API error detected in plugins\mtoa\extension\ExtensionsManager.cpp at
> line 571 : (kFailure): Unexpected Internal Failure Error: file:
> C:/Program Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel
> line 46: ImportError: file <maya console> line 1: No module named
> mtoa.api.extensions
> 
> API error detected in plugins\mtoa\extension\ExtensionsManager.cpp at
> line 571 : (kFailure): Unexpected Internal Failure Error: file:
> C:/Program Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel
> line 46: ImportError: file <maya console> line 1: No module named
> arnold
> 
> API error detected in plugins\mtoa\Main.cpp at line 770 : (kFailure):
> Unexpected Internal Failure 00:00:00   362MB ERROR   | Failed to
> import python module 'arnold' Error: Failed to import python module
> 'arnold' aiSkyDomeLight [u'containerBase', u'entity', u'dagNode',
> u'shape', u'geometryShape', u'locator', u'THlocatorShape',
> u'SphereLocator', u'containerBase', u'entity', u'dagNode', u'shape',
> u'geo metryShape', u'locator', u'THlocatorShape', u'aiSkyDomeLight']
> pymel.internal.apicache : WARNING : lineage for node aiSkyDomeLight is
> cyclical: [u'containerBase', u'entity', u'dagNode', u'shape',
> u'geometryShape', u'locator', u'THlocatorShape', u'Sphere Locator',
> u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'locator', u'THlocatorShape', u'aiSkyDomeLight'] aiSky
> [u'containerBase', u'entity', u'dagNode', u'shape', u'geometryShape',
> u'locator', u'THlocatorShape', u'SphereLocator', u'containerBase',
> u'entity', u'dagNode', u'shape', u'geometryShap e', u'locator',
> u'THlocatorShape', u'aiSky'] pymel.internal.apicache : WARNING :
> lineage for node aiSky is cyclical: [u'containerBase', u'entity',
> u'dagNode', u'shape', u'geometryShape', u'locator', u'THlocatorShape',
> u'SphereLocator',  u'containerBase', u'entity', u'dagNode', u'shape',
> u'geometryShape', u'locator', u'THlocatorShape', u'aiSky'] Error:
> file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> initializePlugin function failed (mtoa) AbcImport v1.0 using Alembic
> 1.5.4 (built May  8 2014 13:47:10) BifrostMain plug-in loaded (built Feb 26 2015 18:01:51) Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> ImportError: file C:/Program
> Files/Autodesk/Maya2016/plug-ins/xgen/plug-ins/xgenMR.py line 9: No m
> odule named xgenm Warning: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46:
> Failed to run file: C:/Program
> Files/Autodesk/Maya2016/plug-ins/xgen/plug-ins/xgenMR.py pymel : ERROR
> : Failed to get controlCommand list from xgenMR pymel : ERROR : Failed
> to get modelEditorCommand list from xgenMR pymel : ERROR : Failed to
> get command list from xgenMR pymel : ERROR : Failed to get
> constraintCommand list from xgenMR pymel.core : ERROR : Failed to get
> depend nodes list from xgenMR Error: file: C:/Program
> Files/Autodesk/Maya2016/scripts/startup/autoLoadPlugin.mel line 46: 
> (xgenMR)
> >>>

I am working through the book Practical Maya Programming, here is the text from the book:

Now we will start digging into Maya and PyMEL. Let's begin by initializing Maya in the mayapy interpreter so we can use more than just standard Python functionality. We do this by calling maya.standalone.initialize, as shown in the following code:

>>> import maya.standalone
>>> maya.standalone.initialize()
>>> import pymel.core as pmc
>>> xform, shape = pmc.polySphere()

The import of pymel.core will implicitly call maya.standalone.initialize automatically, but I do it explicitly here so it's clear what's going on. In the future, you can generally skip the call to maya.standalone.initialize and just import pymel.core.

There is a lot we can discover about these PyMEL objects, which represent Maya nodes, using basic Python. For example, to see the type of either of our objects, we can use the built-in type function (we will dig much deeper into types later in this chapter).

Can anyone explain the errors I am getting in my interpreter and offer a solution?


Solution

  • As you are on windows, make sure you are not using Powershell ISE. Just use standard Powershell.

    As @Boon says, most of those errors are from plugins and bits of Maya that could have been written better.

    As you are focusing on learning programming, you don't need those plugins. You can disable them from an interactive Maya session:

    1. Open Maya.
    2. Choose Windows->Settings/Preferences->Plugin Manager
    3. Turn off "Loaded" and "Auto Load" for all plugins that are not in the top section: i.e. Xgen, Bifrost, Substance, mtoa etc.
    4. Close Maya.

    Now try again in your shell:

    mayapy
    import maya.standalone
    maya.standalone.initialize()
    import pymel.core as pm
    

    At this point, I see a warning about Y-Up, and some Alembic version info, and nothing else. Nothing to worry about there.

    The prompt is >>> which is a good thing. You should be able to enter pymel commands now: Type (one at a time to see the output):

    pm.about(version=True)
    pm.polySphere() 
    pm.ls(type="mesh")
    

    EDIT

    If you are using powershell and have set up a profile, you can save yourself some time by adding the following line to your profile.ps1:

    function ms { mayapy -i  -c "import maya.standalone;maya.standalone.initialize();import pymel.core as pm;print('maya standalone initialized and pymel.core imported as pm')" }
    

    Now you can open a powershell, type ms and start coding.