Hello everyone,
I am relatively new to Python.NET, and I think that it will serve me very well for the application that I am developing.
I am taking an application that had previously been implemented using Python/wxPython/matplotlib/numpy/scipy, and reimplementing it using .NET 4. The main reason that I'm doing this is because the application used to be used primarily by technical people comfortable to working in a Linux environment, but I am interested in making it usable by the Windows crowd.
On the other hand, I don't want to give up the ability to script the application with Python, and I don't want to give up using matplotlib/numpy/scipy. This is what has led me to Python.NET.
Following the email trail, I have been able to get the Console test program running using VS2010 targeting .NET 4. What I'm now interested in doing is to get IPython to load automatically, so the user does not have to manually import IPython then call the IPShell mainloop. I am using Python 2.6.6, IPython 0.10.1, pyreadline 1.6.2 all on XP SP3 win32.
So I modified pythonconsole.py like this:
[STAThread]
public static int Main(string[] args) {
string [] cmd = Environment.GetCommandLineArgs();
PythonEngine.Initialize();
PyObject ip = PythonEngine.ImportModule("IPython"); <<<<<< new
int i = Runtime.Py_Main(cmd.Length, cmd);
PythonEngine.Shutdown();
return i;
}
Unfortunately, ImportModule returns null. Then, from the command line, if I manually import IPython, I get this
----
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import IPython
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\site-packages\IPython\__init__.py", line 58, in <module>
__import__(name,glob,loc,[])
File "C:\Python26\lib\site-packages\IPython\Shell.py", line 37, in <module>
from IPython import ultraTB, ipapi
File "C:\Python26\lib\site-packages\IPython\ultraTB.py", line 93, in <module>
from IPython import Debugger, PyColorize, ipapi
File "C:\Python26\lib\site-packages\IPython\Debugger.py", line 34, in <module>
from IPython import PyColorize, ColorANSI, ipapi
ImportError: cannot import name PyColorize
----
On the other hand, if I leave out this ImportModule from pythonconsole.py, and manually import IPython from the command line, it imports successfully, and furthermore I can run the IPython mainloop.
Ultimately, what I really want to accomplish is to get my .NET 4 application to present the user with an IPython shell that has a .NET "Application" object injected into its namespace, so the user can start interacting with the .NET objects from the application, but also be able to do matplotlib type stuff too.
Does anyone have any thoughts as to why I'm having problems importing IPython programmatically?
Thanks,
-Frank.