google butchered my code again: was supposed to look like this:
import sys import maya.utils sys.stdin.write = lambda self, data: maya.utils.executeDeferred(data) sys.stdin.flush = lambda self: None from IPython.frontend.wx import ipythonx ipythonx.main() On Sep 17, 8:47 pm, Chadrik <[EMAIL PROTECTED]> wrote: > success!!! sorta.... > > thanks for the info, chris, you put me on the right track. i started > looking into this more thoroughly and i was able to launch an > interactive ipython terminal from within maya. there are a few issues > still to resolve, but the potential is very clearly there. it has > popup completion of attributes, tab completion of paths, documentation > prompting, syntax hilighting, plus all the other goodies of ipython. > > here's how i got it working on osx. should not be too much of a leap > for other platforms. i installed to my maya python directory, but > you're welcome to install wherever you like, just make sure everything > is on your PYTHONPATH. > > 1) install ez_install : > > downloadhttp://peak.telecommunity.com/DevCenter/EasyInstall#installing-easy-i... > then run: > sudo mayapy ez_setup.py > > 2) install ipython 0.9.1 : > sudo mayapy /Applications/Autodesk/maya2008/Maya.app/Contents/ > Frameworks/Python.framework/Versions/Current/bin/easy_install ipython > > 3) install wxPython > download the proper binary (be sure to use > unicode):http://wxpython.org/download.php#binaries > run the installer > on osx it installs to /usr/local/ and places a file called > wxredirect.pth in your default python site-packages directory > copy wxredirect.pth from your system python site-packages directory > to your maya site-packages directory: > > cp /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/ > site-packages/wxredirect.pth /Applications/Autodesk/maya2008/Maya.app/ > Contents/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site- > packages/ > > 4) open maya. on osx i had to do this from a terminal because it > seems that sys.args was getting polluted when using the dock. > run the following in maya: > > import sys > import maya.utils > #sys.stdin.write = lambda self, data: > maya.utils.executeInMainThreadWithResult(data) > sys.stdin.write = lambda self, data: maya.utils.executeDeferred(data) > sys.stdin.flush = lambda self: None > from IPython.frontend.wx import ipythonx > ipythonx.main() > > this should launch an ipython interpreter within maya. i found that > executeDeferred was more stable than executeInMainThreadWithResult , i > guess because it does not need to wait for a result. > > if you get an error like: > # Maya: error: no such option: -p > it has something to do with the options used when launching maya > polluting sys.args, which is being parsed by the wx ipython widget. as > i mentioned, i got around it for the moment by launching from a > terminal instead of from the dock. > > there are still some serious issues to resolve: > - in order to safely close the terminal without crashing maya, you > must first end your session by typing quit() or pressing ctrl-d. after > which you can close the window > - here's the biggie: after closing the terminal maya does not seem to > be get the main thread back? new windows cannot be opened. > - the pymel tab completers are broken by default, but i've made a lot > of progress fixing the ipython code that's breaking them. once i get > it all sorted out i'll post some bugs to the ipython bug tracker. > > so, the main problem now is figuring out how to get maya back to a > usable state after the terminal is closed.... any thoughts? > > -chad > > On Sep 16, 2008, at 7:39 PM, Chris G wrote: > > > Looking at the IPython code, I think someone would have to re-write > > substitute IOTerm with something that could read and write to maya, > > maybe through cmdScrollFieldExecuter/Reporter or using > > executeInMainThreadWithResult. > > > On Tue, Sep 16, 2008 at 6:43 PM, chadrik <[EMAIL PROTECTED]> wrote: > > jelle, > > i'm looking to get an interactive ipython session running in a GUI > > Maya. maya has a customized stdin so that it does not have a write > > method > > > import IPython > > # Error: StandardInput instance has no attribute 'write' > > # Traceback (most recent call last): > > # File "<maya console>", line 1, in <module> > > # File "/Applications/Autodesk/maya2008/Maya.app/Contents/ > > Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ > > ipython-0.9.1-py2.5.egg/IPython/__init__.py", line 58, in <module> > > # __import__(name,glob,loc,[]) > > # File "/Applications/Autodesk/maya2008/Maya.app/Contents/ > > Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ > > ipython-0.9.1-py2.5.egg/IPython/ipstruct.py", line 22, in <module> > > # from IPython.genutils import list2dict2 > > # File "/Applications/Autodesk/maya2008/Maya.app/Contents/ > > Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ > > ipython-0.9.1-py2.5.egg/IPython/genutils.py", line 118, in <module> > > # Term = IOTerm() > > # File "/Applications/Autodesk/maya2008/Maya.app/Contents/ > > Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ > > ipython-0.9.1-py2.5.egg/IPython/genutils.py", line 113, in __init__ > > # self.cin = IOStream(cin,sys.stdin) > > # File "/Applications/Autodesk/maya2008/Maya.app/Contents/ > > Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ > > ipython-0.9.1-py2.5.egg/IPython/genutils.py", line 81, in __init__ > > # self._swrite = stream.write > > # AttributeError: StandardInput instance has no attribute 'write' # > > > i can run ipythonx from commandline just fine, but i'd really like > > to get this running inside a maya gui. > > > the contents of ipythonx are: > > > import sys > > from pkg_resources import load_entry_point > > > sys.exit( > > load_entry_point('ipython==0.9.1', 'console_scripts', 'ipythonx')() > > ) > > > if i run the above code in maya i end up with the same error with > > stdin. > > > -chad > > > On Sep 16, 2008, at 2:28 PM, Jelle Feringa wrote: > > >>> is it technically feasible to connect an > >>> interactive python terminal to the active python session inside of > >>> maya? > > >> It is, and if you run "sudo easy_install -U ipython" you'll upgrade > >> to > >> ipython 0.91 and you'll be able to run ipythonx, ipython in a WX > >> shell --~--~---------~--~----~------------~-------~--~----~ Yours, Maya-Python Club Team. -~----------~----~----~----~------~----~------~--~---
