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. basical
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\win
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
Thank you for your thoughtful and thorough response. I now understand much
better what you (and apparently the others) were warning me against and I will
certainly consider that moving forward.
I very much appreciate your help as I learn about python and embedding and all
these crazy encoding
I am very sorry that I have offended you to such a degree you feel it necessary
to publicly eviscerate me.
Perhaps I could have worded it like this: "So far I have not seen any troubles
including unicode characters in my strings, they *seem* to be fine for my
use-case. What kind of trouble ha
i am already doing (3), and all is working perfectly. bytestring literals are
fine, i'm not sure what this trouble is that you speak of.
note that i'm not using PyRun_AnyFile(), i'm loading the script myself, assumed
as utf8 (which was my original problem, i had assumed it was macRoman), then
i got it!! OMG! so sorry for the confusion, but i learned a lot, and i can
share the result:
the CORRECT code *was* what i had assumed. the Python side has always been
correct (no need to put "u" in front of strings, it is known that the bytes are
utf8 bytes)
it was my "run script" function
fair enough. I can provide further proof of strangeness.
here is my latest script: this is saved on disk as a UTF8 encoded file, and
when viewing as UTF8, it shows the correct characters.
==
# -*- coding: utf-8 -*-
import time, kjams, kjams_lib
def log_success(msg, successB, s
i'm sorry this is so confusing, let me try to re-state the problem in as clear
a way as i can.
I have a C++ program, with very well tested unicode support. All logging is
done in utf8. I have conversion routines that work flawlessly, so i can assure
you there is nothing wrong with logging and
> What _are_ you using?
i have scripts in a file, that i am invoking into my embedded python within a
C++ program. there is no terminal involved. the "print" statement has been
redirected (via sys.stdout) to my custom print class, which does not specify
"encoding", so i tried the suggestion a
> I see you are using Python 2
correct
> Firstly, in Python 2, the compiler assumes that the source code is encoded in
> ASCII
gar, i must have been looking at doc for v3, as i thought it was all assumed to
be utf8
> # -*- coding: utf-8 -*-
okay, did that, still no change
> you need to use u"
note everything works great if i use Ascii, but:
in my utf8-encoded script i have this:
> print "frøânçïé"
in my embedded C++ i have this:
PyObject* CPython_Script::print(PyObject *args)
{
PyObject*resultObjP = NULL;
const char *utf8_
i was able to get what i wanted by simply iterating over the tupile instead of
using ParseTupile, then just query the type, then convert the type to C and
move on to the next. totally great, now i can pass N different argument types
to a single function, and have the C side deal gracefully with
I'd like to be able to use PyArg_ParseTuple() in a generic way.
for example, i'd like to have all commands start with 1 integer parameter, and
this "commandID" will inform me of what parameters come next (via LUT).
knowing that i can then call ParseTuple again with the proper parameters.
like t
okay, well that might turn out to be useful, except i don't quite know how to
use it, and there are no "from scratch" instructions.
i managed to download "py2exe-0.6.9.zip" and unzip it, but how does one
"install" this package? (yes, still a newb at that)
then, once installed, how do i say "in
yes, i've looked there, and all over google. i'm quite expert at embedding at
this point.
however nowhere i have looked has had instructions for "this this is how you
package up your .exe with all the necessary python modules necessary to
actually run on a user's system that does not have pyth
Okay, i'm really surprised nobody knows how to do this. and frankly i'm amazed
at the utter lack of documentation. but i've figured it out, and it's all
working beautifully.
if you want the code, go here:
http://karaoke.kjams.com/wiki/Python
--
http://mail.python.org/mailman/listinfo/python-l
nooobody knw
the trouble a s...
--
http://mail.python.org/mailman/listinfo/python-list
in my C++ app, on the main thread i init python, init threads, then call
PyEval_SaveThread(), since i'm not going to do any more python on the main
thread.
then when the user invokes a script, i launch a preemptive thread
(boost::threads), and from there, i have this:
static int
DOH! as my second thread, i had been using a sample script that i had
copy-pasted without much looking at it. guess what? it prints the time. and
yes, it did "from time import time", which explains it all.
thanks for the hints here, that helped me figure it out!
--
http://mail.python.org/mai
no, there is no "time.py" anywhere (except perhaps as the actual python library
originally imported)
did you understand that the function works perfectly, looping as it should, up
until the time i run a second script on a separate thread?
--
http://mail.python.org/mailman/listinfo/python-list
okay, i have simplified it: here is the code
==
import time
def main():
while True:
print "i'm alive"
time.sleep(0.25)
#-
if __name__ == "__main__":
main()
===
does nobody know how to do this?
does nobody know where proper documentation on this is?
--
http://mail.python.org/mailman/listinfo/python-list
in my app i initialize python on the main thread, then immediately call
PyEval_SaveThread() because i do no further python stuff on the main thread.
then, for each script i want to run, i use boost::threads to create a new
thread, then on that thread i "ensure" the GIL, do my stuff, then release
what must i include in my app package if i'm embedding python?
i tried including *everything* in the "DLLs" directory, but my app still
crashes as soon as i attempt to initialize python.
this is on a system that does not have python installed, as most of my users
won't have it. is it actually
Okay the link problem was solved: i had installed a 64bit python and my app is
32bit.
i'm using ActivePython installer from here:
http://www.activestate.com/activepython/downloads
it seems that now the problem is that this does not install the _d versions of
the .lib. :(
does anyone know how
update: okay so the python27.dll is in /windows/system32 so ignore that
i've set my include directory correct, so i can compile
i've set my "additional libraries" directory to the "libs" directory (where the
".lib" files are. (note: NOT including "Lib" directory, cuz that's full of .py
files a
> > Now for Windows: same thing, i think i must create a .dll, right?
> you should already have a python.dll in your installation
i can find "python27.lib" in the "libs" folder, but there is no
"python27_d.lib", and there is no "python27.dll" in the DLLs folder?
are there instructions for creati
> http://karaoke.kjams.com/wiki/Python
nevermind, i got it, it's working now (see link for code)
--
http://mail.python.org/mailman/listinfo/python-list
i don't use stdout in my own code, my code goes to my own log file. i want the
output from any python code to go to my existing log file, so log statements
from my app and any python code are intermingled in that one file.
my updated code is here, which now bridges my python print function to m
well, umm, gosh, now i feel quite silly. that was easy. okay that's done.
next: i'd like to redirect the output of any "print" statements to my C
function:
> voidLog(const unsigned char *utf8_cstrP);
on the mac, python output sys.stdout goes into the debug console if you're in
the
i'm targeting Mac and Windows. Let's skip the thing about "it should work when
my app isn't running", just assume it's going to be embedded, no pipes or
sockets necessary.
For Mac, I understand i need to "create" (?) a python.dylib, but i find no
directions for that at the expected location:
i'd like my app to be "available" to python while it's running.
for example, say my app is "FooBar.app".
when my FooBar.app is running, now there is a python interface available to
python, and the user can write python scripts to make use of it.
with their scripts, they can control my running a
33 matches
Mail list logo