Re: can't find win32api from embedded pyrun call
the problem was: ActivePython does not install debug libraries, so you must link with release libraries in your project. but if you run the debug version, you're linking against debug libraries which conflict with the ones linked to by python. "fixed" by running the release version. basically, it's not possible to debug with ActivePython due to ActiveState not including debug libs. grr -- https://mail.python.org/mailman/listinfo/python-list
Re: can't find win32api from embedded pyrun call
On 03/09/2013 21:50, David M. Cotter wrote: > I find i'm having this problem, but the solution you found isn't > quite specific enough for me to be able to follow it. > > I'm embedding Python27 in my app. I have users install > ActivePython27 in order to take advantage of python in my app, so the > python installation can't be touched as it's on a user's machine. > > When I attempt to do: >> import win32api > > i get this: >> Traceback (most recent call last): File "startup.py", line 5, in >> ImportError: DLL load failed: The specified module could >> not be found. You'll likely get more input from the guys on the python-win32 list. Most times I've come across this issue it's been because the pywin32 package (or the whole Python distribution if you're using ActiveState) was not installed as an administrator / elevated. I'm not sure I've ever fathomed why, and the investigation isn't helped by the import dance which the pywin32 code does. I don't remember solving it without a reinstall on the user's machine. TJG -- https://mail.python.org/mailman/listinfo/python-list
Re: can't find win32api from embedded pyrun call
note that when the script is called, i DO see this in the output window: > 'kJams 2 Debug.exe': Loaded 'C:\Python27\Lib\site-packages\win32\win32api.pyd' > 'kJams 2 Debug.exe': Loaded 'C:\Windows\SysWOW64\pywintypes27.dll' > 'kJams 2 Debug.exe': Unloaded > 'C:\Python27\Lib\site-packages\win32\win32api.pyd' > 'kJams 2 Debug.exe': Unloaded 'C:\Windows\SysWOW64\pywintypes27.dll' -- https://mail.python.org/mailman/listinfo/python-list
Re: can't find win32api from embedded pyrun call
I find i'm having this problem, but the solution you found isn't quite specific enough for me to be able to follow it. I'm embedding Python27 in my app. I have users install ActivePython27 in order to take advantage of python in my app, so the python installation can't be touched as it's on a user's machine. When I attempt to do: >import win32api i get this: >Traceback (most recent call last): > File "startup.py", line 5, in >ImportError: DLL load failed: The specified module could not be found. I someone suggested i manually load the dependent libraries in the correct order, like this: >import pywintypes >import pythoncom >import win32api but then i get this: >Traceback (most recent call last): > File "startup.py", line 3, in > File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 124, in > >__import_pywin32_system_module__("pywintypes", globals()) > File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 64, in > __import_pywin32_system_module__ >import _win32sysloader ImportError: DLL load failed: The specified module could not be found. the ultimate goal here is actually to do this: >from win32com.client.gencache import EnsureDispatch which currently yields: >Traceback (most recent call last): > File "startup.py", line 3, in > File "C:\Python27\lib\site-packages\win32com\__init__.py", line 5, in > >import win32api, sys, os >ImportError: DLL load failed: The specified module could not be found. So, if anyone has any idea, that would be super duper great. thanks so much! notes: my paths are definitely set correctly -- https://mail.python.org/mailman/listinfo/python-list
Re: can't find win32api from embedded pyrun call
Miki wrote: > IIRC you need to set the path explicitly in an embedded interpreter. > See the code in "site.py" (which again IMO is *not* imported when the > interpreter starts). Thanks Miki. Actually that doesn't turn out to be the problem. If I display sys.path within the embedded script, it shows the complete list of paths, there is no need to pre-load. The problem turned out to be a mismatch of parts. For one thing, building the debug lib from Python sources using VS2005 leads to the crash in PyInitialize (I don't know why others haven't run into this); building with VS2003 did away with that. But that then led to the well-known problem with a FILE* where the app is using one msvcrt and the lib another. At some point in fixing these issues, the "cannot find win32api" went away. I now use this trick from a colleague which allows me to build a debug version of my app but load the release version of the lib: bracket the "#include python.h" statement with undef/redef of _DEBUG. And this trick to get around the FILE* problem (since my app is VS2005 and the lib is 2003): instead of PyRun_SimpleFile, use PyRun_SimpleString ("execfile(fname)"). I got this from the win32 FAQ. I hope someone benefits from this, it cost me plenty to figure out. -- Jim -- http://mail.python.org/mailman/listinfo/python-list
Re: can't find win32api from embedded pyrun call
Hello Jim, > // Py_Initialize(); > Py_InitializeEx(0); > PyRun_SimpleString("from win32com.client import *"); > > Here's what it does on the last line: > > File "D:\Python\Lib\site-packages\win32com\__init__.py", line 5, in ? > import win32api, sys, ok > ImportError: No module named win32api > > The same line runs fine in IDLE or at the command prompt. It also runs > without complaint if I run a release version of the app. To build the > debug version I had to build python42_d.lib/dll myself. The reason I > can't call PyInitialize is that it crashes with an "invalid signal" > error. > > I don't think it's a path issue -- I've checked system path, sys.path, > pythonpath env var, and the pythonpath entry in the registry, all of > them loaded with directories including the one with win32api.pyd. > Besides, if it were an install or path problem, why would it work at > the command prompt? IIRC you need to set the path explicitly in an embedded interpreter. See the code in "site.py" (which again IMO is *not* imported when the interpreter starts). HTH, Miki http://pythonwise.blogspot.com/ -- http://mail.python.org/mailman/listinfo/python-list
can't find win32api from embedded pyrun call
I am trying to figure out how to embed Python in a little C++ Windows console app. Here's the code: // Py_Initialize(); Py_InitializeEx(0); PyRun_SimpleString("from win32com.client import *"); Here's what it does on the last line: File "D:\Python\Lib\site-packages\win32com\__init__.py", line 5, in ? import win32api, sys, ok ImportError: No module named win32api The same line runs fine in IDLE or at the command prompt. It also runs without complaint if I run a release version of the app. To build the debug version I had to build python42_d.lib/dll myself. The reason I can't call PyInitialize is that it crashes with an "invalid signal" error. I don't think it's a path issue -- I've checked system path, sys.path, pythonpath env var, and the pythonpath entry in the registry, all of them loaded with directories including the one with win32api.pyd. Besides, if it were an install or path problem, why would it work at the command prompt? Could it be a problem with the debug lib I built? Any suggestions are welcome. -- Jim -- http://mail.python.org/mailman/listinfo/python-list