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 -- http://mail.python.org/mailman/listinfo/python-list