[lldb-dev] " Import error: No module named embedded_interpreter" on windows

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Wed Oct 7 12:40:22 PDT 2015


When you built LLDB, did you specify a -DPYTHON_HOME=<path> on your CMake
command line, and also run the install_custom_python.py script?  There's a
lot of steps, so it seems like almost everybody misses at least one step
when doing this.

I'm actively working (as in, literally right now) on getting LLDB to work
with Python 3.  If all goes smoothly, hopefully all of these problems will
disappear and everything will just work without any user configuration
required at all.

On Wed, Oct 7, 2015 at 12:17 PM kwadwo amankwa <que at lunarblack.com> wrote:

> Hi Zachary,
>
> Ok so I did end up reconfiguring it and rebuilding but that was no help .
> I then realized that I was importing python27.dll as well as python27_d.dll
> . When I rebuilt liblldb I started getting an single unresolved error for
> imp_Py_InitModule which I guess was the symbol for the Py_InitModule4
> python api  which is actually a macro which is defined depending on a few
> flags . So I ended up rebuilding python27 and the unresolved error went
> away and built everything from scratch . The good news is that when I
> invoke the 'script' command in the lldb interpreter it doesn't crash
> anymore and I can use the python interpreter . I can even import the lldb
> module without getting the embedded interpreter Import error . However I
> when I actually import lldb from a python module and run it with the
> standalone interpreter I still get the Import Error.  I have checked the
> PYTHONPATH which was different for the lldb embedded interpreter and
> updated the variable to contain the missing paths but no cigar :-(    .
> Any suggestions ?
>
>
> On 05/10/15 21:21, Zachary Turner wrote:
>
> Can you try to regenerate CMake with that command line and see if that
> helps?
>
> On Mon, Oct 5, 2015 at 1:17 PM kwadwo amankwa <que at lunarblack.com> wrote:
>
>>
>> No
>>
>> On 05/10/15 21:15, Zachary Turner wrote:
>>
>> Are you using -DCMAKE_BUILD_TYPE=Debug when you generate CMake?
>>
>> On Mon, Oct 5, 2015 at 1:14 PM kwadwo amankwa <que at lunarblack.com> wrote:
>>
>>> Thanks for the response ,  sorry for the delay. As a matter of fact I
>>> actually got rid of the system python and installed my custom version.  I
>>> do suspect it is a linking problem though. When I build liblldb.dll it
>>> always loads python27.dll instead of python27_d.dll. Do you happen to know
>>> where the python27 lib is specified as an input library because the project
>>> properties in liblldb does not specify it . however the linker complains if
>>> I don't specify the lib directory in 'additional directories' and when I do
>>> it always links to the python27lib. I grepped the whole build directory and
>>> two files SystemInitializer.obj and LLDBWrapPython.obj seem to contain
>>> /DEFAULTLIB:python27.lib. Do you have an idea of what is causing the
>>> compiler to do this ?
>>>
>>>
>>> On 05/10/15 19:13, Zachary Turner wrote:
>>>
>>> Ahh, I thought you were doing this from inside LLDB.  There are a couple
>>> of problems:
>>>
>>> 1) You might be running with the system Python, not the custom Python
>>> you built with VS2013.  What is the value of `sys.executable`?
>>> 2) Even if you are running your own Python, the regular Python appears
>>> to be in your `sys.path`.  You will need to unset PYTHONPATH and PYTHONHOME
>>> from pointing to your system Python.  PYTHONHOME should point to your
>>> custom Python, and PYTHONPATH should point to the `lib\site-packages`
>>> directory that I mentioned earlier in your build directory.
>>>
>>>
>>>
>>> On Mon, Oct 5, 2015 at 11:06 AM kwadwo amankwa <que at lunarblack.com>
>>> wrote:
>>>
>>>> here it is;
>>>>
>>>> C:\Users\redbandit\Documents\GitHub\pygui>python
>>>> Python 2.7.10 (default, Sep 18 2015, 02:35:59) [MSC v.1800 64 bit
>>>> (AMD64)] on win32
>>>> Type "help", "copyright", "credits" or "license" for more information.
>>>> >>> import sys
>>>> >>> sys.path
>>>> ['', 'C:\\Python27\\Lib',
>>>> 'C:\\Users\\redbandit\\llvm\\build\\Debug\\lib\\site-packages\\lldb',
>>>> 'C:\\Users\\redbandit\\llvm\\build\\tools\\lldb\\scripts',
>>>> 'C:\\Users\\redbandi t\\Documents\\GitHub\\pygui',
>>>> 'C:\\Python27\\python27.zip', 'C:\\Python27\\DLLs',
>>>> 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27',
>>>> 'C:\\Python27\\li b\\site-packages']
>>>> >>> import lldb
>>>> Traceback (most recent call last):
>>>>   File "<string>", line 1, in <module>
>>>> ImportError: No module named embedded_interpreter
>>>> >>> lldb.__file__
>>>> 'C:\\Users\\redbandit\\llvm\\build\\tools\\lldb\\scripts\\lldb.pyc'
>>>> >>> sys.path
>>>> ['C:/Users/redbandit/llvm/build/Debug/lib/site-packages/lldb',
>>>> 'C:/Users/redbandit/llvm/build/Debug/lib/site-packages/lib/site-packages',
>>>> '', 'C:\\Python27\\Lib', 'C:\\Users\\
>>>> redbandit\\llvm\\build\\Debug\\lib\\site-packages\\lldb',
>>>> 'C:\\Users\\redbandit\\llvm\\build\\tools\\lldb\\scripts',
>>>> 'C:\\Users\\redbandit\\Documents\\GitHub\\pygui', 'C:\\Pyt
>>>> hon27\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib\\plat-win',
>>>> 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27',
>>>> 'C:\\Python27\\lib\\site-packages', '.']
>>>>
>>>>
>>>> On 05/10/15 18:48, Zachary Turner wrote:
>>>>
>>>> Can you run the followign commands and paste the output?
>>>>
>>>> >>> import sys
>>>> >>> sys.path
>>>> ['D:/src/llvmbuild/ninja/bin',
>>>> 'D:/src/llvmbuild/ninja/lib/site-packages',
>>>> 'D:\\src\\llvmbuild\\ninja\\bin\\python27_d.zip',
>>>> 'C:\\Python27_LLDB\\x86\\DLLs', 'C:\\Python27_LLDB\\x86\\lib',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\plat-win',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\lib-tk', 'D:\\src\\llvmbuild\\ninja\\bin'
>>>> , 'C:\\Python27_LLDB\\x86',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\site-packages', '.']
>>>> >>> import lldb
>>>> >>> lldb.__file__
>>>> 'D:/src/llvmbuild/ninja/lib/site-packages\\lldb\\__init__.pyc'
>>>> >>> sys.path
>>>> ['D:/src/llvmbuild/ninja/bin',
>>>> 'D:/src/llvmbuild/ninja/lib/site-packages',
>>>> 'D:\\src\\llvmbuild\\ninja\\bin\\python27_d.zip',
>>>> 'C:\\Python27_LLDB\\x86\\DLLs', 'C:\\Python27_LLDB\\x86\\lib',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\plat-win',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\lib-tk', 'D:\\src\\llvmbuild\\ninja\\bin'
>>>> , 'C:\\Python27_LLDB\\x86',
>>>> 'C:\\Python27_LLDB\\x86\\lib\\site-packages', '.']
>>>> >>>
>>>>
>>>> and also make sure that in the same folder as your _lldb_d.pyd, there
>>>> is an embedded_interpreter.py?
>>>>
>>>> On Mon, Oct 5, 2015 at 9:14 AM kwadwo amankwa <que at lunarblack.com>
>>>> wrote:
>>>>
>>>>> Hi Zachary,
>>>>>
>>>>> thanks for the reply , I did use MSBUILD  as Ninja didn't work for me
>>>>> on my system.  As far as the _lldb_d.pyd file is concerned it is stored in
>>>>> the same place.  and it is being used by lldb.py because everything else
>>>>> works besides the embedded_interpreter. That is I am able to use the api
>>>>> from python it is just that interpreter issue that comes up .
>>>>>
>>>>> Cheers,
>>>>> Que
>>>>>
>>>>>
>>>>> On 05/10/15 16:56, Zachary Turner wrote:
>>>>>
>>>>> Are you using MSBuild or Ninja to build (i.e. are you clicking the
>>>>> Build Solution button in Visual Studio or running ninja from command
>>>>> line)?  I don't know where it puts this stuff with a VS2013 build, but with
>>>>> a ninja build, your directory will be organized like this:
>>>>>
>>>>> build
>>>>> |___bin
>>>>>      |___lldb.exe
>>>>>      |___liblldb.dll
>>>>> |___lib
>>>>>      |___site-packages
>>>>>            |___lldb
>>>>>                  |___lldb_d.pyd   // If this is a debug build,
>>>>> lldb.pyd if release
>>>>>
>>>>> I'm betting you're missing the pyd file.  Can you confirm? Then we can
>>>>> diagnose that if it turns out to be the problem.
>>>>>
>>>>> On Mon, Oct 5, 2015 at 5:20 AM kwadwo amankwa via lldb-dev <
>>>>> lldb-dev at lists.llvm.org> wrote:
>>>>>
>>>>>> Hi guys,
>>>>>>
>>>>>> Can someone point me in the right direction on this . I have managed
>>>>>> to
>>>>>> set up my environment on windows , compiling python2.7.10 using VS2013
>>>>>> and building llvm/lldb in VS2013. lldb and all its libraries build
>>>>>> successfully so its just when I import lldb into my python project I
>>>>>> get
>>>>>> this error.
>>>>>>
>>>>>> File "<string>", line 1, in <module>
>>>>>> Import error: No module named embedded_interpreter
>>>>>>
>>>>>>   Also when I use the 'script' command in the lldb interpreter , lldb
>>>>>> completely crashes  with an unhandled exception in the  python
>>>>>> file_write  function (fileobject.c:1852)
>>>>>>
>>>>>> n2 = fwrite(s, 1, n, f->f_fp);
>>>>>>
>>>>>> the call to fwrite causes an access violation  . My intuition tells me
>>>>>> that i'm missing  a lib or something but I can't put my finger on it.
>>>>>> Please Help !
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> lldb-dev mailing list
>>>>>> lldb-dev at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20151007/3f7c291f/attachment-0001.html>


More information about the lldb-dev mailing list