On Jun 6, 11:25 am, [EMAIL PROTECTED] wrote: > On Jun 6, 1:13 am, Nir <[EMAIL PROTECTED]> wrote: > > > > > You seem to be having a problem with the import path of the embedded > > interpreter. I suppose the embedded interpreter includes some modules > > in a particular folder and _socket is not one of them. For the sake of > > debugging try adding the c:\python25\lib path to the sys.path variable > > of the interpreter before attempting to import rpdb2. > > > Does this work? > > > Nir > > > On Jun 5, 2:52 pm, [EMAIL PROTECTED] wrote: > > > > I am embedding Python in a MSVC++ (2005) application. The application > > > creates some environment and then launches a Python script that will > > > call some functions exported from the MSVC++ application. > > > > I want to be able to debug the Python script by using a debug server, > > > likeWinpdb(winpdb.org). > > > > I use ActivePython 2.5.2.2, Microsoft Visual Studio 2005, andWinpdb > > > 1.3.8. > > > > When I launch a script like "e:>python test.py" everything is O'K and > > > I can useWinpdbto trace/debug. > > > > When I run the same script from the MSVC++ application, there is > > > always a complain "ImportError: No module named _socket". > > > > Here is the basic test script I use: > > > > def Process( something ): > > > print "\n\nStarted debugging\n=================\n" > > > #pydevd.settrace() > > > import rpdb2; rpdb2.start_embedded_debugger("1") > > > print "\n\nStopped debugging\n=================\n" > > > > if __name__ == '__main__': > > > Process( "test" ) > > > <<< > > > > In the MSVC++ application I tried many approaches, as suggested by > > > many people, and all of them work to launch the script, but none of > > > them works withWinpdb(or PyDev for Eclipse - same problem). Just for > > > completeness - here is one: > > > > PyRun_SimpleString("import sys"); > > > PyRun_SimpleString("import os"); > > > PyRun_SimpleString( "fullpath = os.path.abspath(\"E:/Test.py\")" ); > > > PyRun_SimpleString( "g = globals().copy()" ); > > > PyRun_SimpleString( "g['__file__'] = fullpath"); > > > PyRun_SimpleString( "execfile(fullpath, g) "); > > > <<< > > > > If I use pdb (import pdb + pdb.runcall(something) ) everything works > > > fine, but I need the performance and convinience ofWinpdb. > > > > What am I doing wrong? > > > > Your help is highly appreciated! > > > > Best regards, > > > Chris > > Nir, > > > Does this work? > > Unfortunately, not. > > I did some experiments to check the sys.path hypothesis: > > - In my MSVC++ application I did PyRun_SimpleString("import cgi"); - > it complained about missing _socket. > > - Did PyRun_SimpleString("print sys.path") to get the sys.path as seen > from within the application environment (that does not find _socket) > > - Did the same in "test.py" and ran ...>Python test.py to get the > sys.path for the environment that _does_ find _socket > > - Compared the two - the working environment had two more paths: > > C:\\WINDOWS\\system32\\python25.zip > C:\\Python25\\lib\\plat-win > > - Added the missing path to the embedded environment: > > PyRun_SimpleString("import sys"); > PyRun_SimpleString("import os"); > > PyRun_SimpleString("sys.path.append(\"C:\\WINDOWS\\system32\ > \python25.zip\")"); > PyRun_SimpleString("sys.path.append(\"C:\\Python25\\lib\\plat-win > \")"); > > PyRun_SimpleString("print sys.path"); > > PyRun_SimpleString("import cgi"); > > Not all paths that are in the working environment are present in the > embedded environment, but still there is a problem: > > Traceback (most recent call last): > File "<string>", line 1, in <module> > File "C:\Python25\Lib\cgi.py", line 40, in <module> > import urllib > File "c:\Python25\lib\urllib.py", line 26, in <module> > import socket > File "c:\Python25\lib\socket.py", line 45, in <module> > import _socket > ImportError: No module named _socket > > Chris
There is a typo: "Not all paths that are in the working environment are present in the embedded environment, but still there is a problem:" should read "Now all paths...." Sorry! Chirs -- http://mail.python.org/mailman/listinfo/python-list