There are some great posts and pages explaining how to setup Wing IDE to remotely debug a Maya session. Eric Pavey first posted how to do this at his WarpCat Blog along with how to send commands back and forth to Maya from Wing.
Luckily, now, many of us are starting to use this workflow and some other little tips and tricks have been discovered. I’d like to spell out all the steps from beginning to end right here.
- Hack wingdbstub.py
- Adjust Remote Debugging preferences in Wing
- Create method to connect to Wing from Maya
- Add pythonpath to module
In detail . . .
1. Hack wingdbstub.py
Copy wingdbstub.py from your:
C:/Program Files (x86)/Wing IDE 4.0/.
and put it into your favorite pythonpath folder with the rest of your development code.
Change the lines:
(~ line 96)
kEmbedded = 0
kEmbedded = 1
and maker sure this line points to your actual installation dir of wing:
(~ line 116)
WINGHOME = r"C:\Program Files (x86)\Wing IDE 4.0"
WINGHOME = r"/Applications/wingIDE/WingIDE.app/Contents/MacOS"
2. Adjust Remote Debugging preference in Wing
In wing goto Edit -> Preferences -> Debugger -> External/Remote
‘Enable Passive Listen’
‘Kill Externally Launched’
Then right click on the bug icon in lower left of Wing’s window and make sure that Passive Listen is enabled
3. Create method to connect to Wing from Maya
Now, make a nice method which you can call from a hotkey in Maya. I’d make a method like this:
# developerTools.py # make sure this method is in a module in your pythonpath def connectToWing(): """ SYNOPSIS Connects to wingIDE debugger INPUTS NONE RETURNS: Nothing """ import wingdbstub try: wingdbstub.Ensure() print 'Connected to wingIDE' except ValueError: print 'Could NOT connect to wingIDE'
Now you can make a hotkey in Maya by adding this as the command in the hotkey editor (suggest CTRL+SHIFT+w):
// this is mel code because that is what hotkey editor recognizes python("import developerTools"); python("reload (developerTools)"); python("developerTools.connectToWing()")
4. Add pythonpath to module
Make sure your the folders that your deverlopTools.py (or wherever you make the connectToWing module) and the folder to your wingdbstub.py are part of your pythonpath. If you ever need to see what pythonpaths your (Maya) environment is aware of, you can just try this:
# prints all pythonpaths for p in sys.path: print p
Actually there are a bunch of handy paths to consider as a developer for Maya, but I’ll save that for next post. 😉
- start Wing
- start Maya
- call connectToWing() method (CTRL+SHIFT+w) (bug should turn green in Wing)
- setup a breakpoint in code in Wing
- call that code from Maya
And if you’re still having trouble, feel free to post questions/comments here or follow these links to my source documentation:
Jason, this is great. I’m really glad I didn’t spend time last week trying to set this up b/c this took minutes to do, whereas it might have taken me hours. For now, I’m having an issue with connectToWing(). Wing throws an error here:
TypeError: StartDebug() got an unexpected keyword argument ‘autoquit’
File “G:\Scripts\Maya\Python\EABL_DH2\developerTools.py”, line 22, in connectToWing
Go ahead and remove the keyword arg ‘autoquit=False’ from the StartDebug call. Should still work. You working in OSX by any chance? Trying to determine when this arg is needed and when it errors. I got that error at home on OSX when I had that keyword in the call as well.
Nope, on win 7 -64 bit. I did remove the arg already and it works fine. I went over all of Wing’s debugger docs today to familiarize myself so I still need to test debugging one of my scripts but I believe I’m off to a very good start!
Holy crap! I put this off for way too long. This and unittesting have just changed/saved my pipeline. Thanks for posting this! Goodbye Eclipse/Pydev!
I use both Wing and Eclipse/Pydev is a superior coding environment. Wing is better at debugging w/ the debug probe and has nice unitTest features. It seems a bit much, but using both is a very nice solution, actually.
I tested today the debugging with Wing IDE and works fine!
But, I see in your presentation one video where you write “joint(n=’test’)” and the joint is created in Maya instantly. I try to recreate the same example but the joint only is showed in Maya when the debug is finished. The Maya viewport doesn’t refresh when Wing IDE is in debug mode. How can I fix that?
Thanks Jason! 🙂
The refresh of the app while debugging is pretty finicky. It is not supposed to refresh at all. I think under certain conditions you can get the perspective view to redraw but I could never get the outliner to redraw. I do not remember exactly how I stumbled across how to do this, it was really more of a ‘bug’ rather than a feature. It may have been a Win7, thing.
I have an issue with the presented setup. When an error is encountered in my python script, Maya is terminated. When I uncheck ‘Kill Externally Launched’, Maya is not terminated, but then I can’t fix the error ( with or without stopping the debugger ), save and restart the script from Maya. The only help google gave me was this outdated post:
But it still does not help. Any Idea what I’m doing wrong ?
Maya should not terminate on an error of course. I’m pretty sure you have to have ‘Kill Externally Launched’ to get any kind of connection. I’ve never run the debugger without that checked. But that is not the answer.
Most people cannot connect, but I’ve never heard of your problem before. Many people have got this to work, so there must be something odd in your setup. I would suggest starting from scratch.
I think WingWare even includes their own instructions on how to connect to Maya because it is so popular now. You may want to try their setup procedure: http://www.wingware.com/doc/howtos/maya
You can always email them. I’ve found they’ve been very responsive and fixed anything I needed. If you find out what was wrong, please post here to let us know.
Im using maya 2015 and Wing 5.01
Im having issues setting the entire process up 🙁
You’ll have to be more specific than that. There might be minor changes as all the softwares have updated since then.
You may want to consider upgrading to PyCharm as it is a far superior product, however.
Here’s a great plugin to help you do this:
Christian’s post on Making Eclipse soar gives some more instructions to help with this setup:
Look under 3. -> Maya Connection