Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > How do I tell if I'm running in the PyWin interpreter?

Reply
Thread Tools

How do I tell if I'm running in the PyWin interpreter?

 
 
Charles Krug
Guest
Posts: n/a
 
      01-28-2006
Here's the deal:

I've a dead-simple command-line program I'm using to test things that I
can't (for various reasons) test in the IDE.

Here's a do-nothing subset that shows the idea:

# insanely simply command interpreter
import Commands
import sys

myPrompt = '$> '

# Raw Input doesn't QUITE do what I want in Python Win.
while True:
try:
args = raw_input(myPrompt).strip().split()
except EOFError:
break

cmd = args[0]
print '>%s<' % cmd
print args

As the comment says, when I run this under Python Win, I get an (pretty
sure) Tkinter interface, not a command line, and I don't get my
EOFError when I expect to.

This is something I occasionally need in my Swiss Army Knife. Not
often, but when I need something like this, I need something like THIS
pretty badly, and sometimes I need to run it under PyWin (and under
Linux, Unix, Solaris, and anything else you might name and a few things
I bet you couldn't).

Is there a way to detect that I'm running the the PyWin interpreter so
that I can bypass its raw_input behavior?

Is there a simpler way to do this?

I recall some sample code that did something very much like this (define
a small set of callbacks and execute them from a command-like interface)
but I can't seem to lay my hands on the example.

Thanx


Charles
 
Reply With Quote
 
 
 
 
Steven D'Aprano
Guest
Posts: n/a
 
      01-28-2006
On Fri, 27 Jan 2006 21:05:43 -0600, Charles Krug wrote:

> Here's the deal:
>
> I've a dead-simple command-line program I'm using to test things that I
> can't (for various reasons) test in the IDE.
>
> Here's a do-nothing subset that shows the idea:
>
> # insanely simply command interpreter
> import Commands
> import sys
>
> myPrompt = '$> '
>
> # Raw Input doesn't QUITE do what I want in Python Win.
> while True:
> try:
> args = raw_input(myPrompt).strip().split()
> except EOFError:
> break
>
> cmd = args[0]
> print '>%s<' % cmd
> print args
>
> As the comment says, when I run this under Python Win, I get an (pretty
> sure) Tkinter interface, not a command line, and I don't get my
> EOFError when I expect to.


When do you expect to get an EOFError? The only way I get an EOFError is
if I explicitly hit Ctrl-D while raw_input is running. When do you expect
to get it? Have you tried Ctrl-Z under Windows?



--
Steven.

 
Reply With Quote
 
 
 
 
Charles Krug
Guest
Posts: n/a
 
      01-28-2006
On 2006-01-28, Steven D'Aprano <(E-Mail Removed)> wrote:
>>
>> As the comment says, when I run this under Python Win, I get an (pretty
>> sure) Tkinter interface, not a command line, and I don't get my
>> EOFError when I expect to.

>
> When do you expect to get an EOFError? The only way I get an EOFError is
> if I explicitly hit Ctrl-D while raw_input is running. When do you expect
> to get it? Have you tried Ctrl-Z under Windows?
>


That's exactly how I use it everywhere else. Type until you're done
then hit <Ctrl-D>

The problem is only when running under the PyWin IDE . . I'd been using
this for months under Idle and every place else I needed it.

The problem is that PyWin doesn't give you a raw command line with in
response to raw_input, but gives you a text entry box and a nice
OK-Cancel yada yada interface that silently eats my EOF.

I'd like to have a single tool I can use everywhere. So far as I can
tell, that means I have to detect the PyWin IDE and handle it
separately on initialization so I get a real raw input and not the
redefined Tkinter version.

 
Reply With Quote
 
Peter Otten
Guest
Posts: n/a
 
      01-28-2006
Charles Krug wrote:

> Is there a way to detect that I'm running the the PyWin interpreter so
> that I can bypass its raw_input behavior?


You could test

if pywin_specific_module in sys.modules:
# use workaraound

Or maybe you can get away with always using sys.stdin.readline() instead of
raw_input()? Look into cmd.py for an example.

Peter

 
Reply With Quote
 
vincent wehren
Guest
Posts: n/a
 
      01-28-2006
"Charles Krug" <(E-Mail Removed)> schrieb im Newsbeitrag
news:(E-Mail Removed)...
| On 2006-01-28, Steven D'Aprano <(E-Mail Removed)> wrote:
| >>
| >> As the comment says, when I run this under Python Win, I get an (pretty
| >> sure) Tkinter interface, not a command line, and I don't get my
| >> EOFError when I expect to.
| >
| > When do you expect to get an EOFError? The only way I get an EOFError is
| > if I explicitly hit Ctrl-D while raw_input is running. When do you
expect
| > to get it? Have you tried Ctrl-Z under Windows?
| >
|
| That's exactly how I use it everywhere else. Type until you're done
| then hit <Ctrl-D>
|
| The problem is only when running under the PyWin IDE . . I'd been using
| this for months under Idle and every place else I needed it.
|
| The problem is that PyWin doesn't give you a raw command line with in
| response to raw_input, but gives you a text entry box and a nice
| OK-Cancel yada yada interface that silently eats my EOF.
|
| I'd like to have a single tool I can use everywhere. So far as I can
| tell, that means I have to detect the PyWin IDE and handle it
| separately on initialization so I get a real raw input and not the
| redefined Tkinter version.
|

import sys
import os
if os.path.basename(sys.executable) == 'Pythonwin.exe':
#Pythonwin specific initialization
else:
#Other

HTH,

Vincent Wehren



 
Reply With Quote
 
Charles Krug
Guest
Posts: n/a
 
      01-28-2006
On 2006-01-28, Peter Otten <(E-Mail Removed)> wrote:
> Charles Krug wrote:
>
>> Is there a way to detect that I'm running the the PyWin interpreter so
>> that I can bypass its raw_input behavior?

>
> You could test
>
> if pywin_specific_module in sys.modules:
> # use workaraound
>
> Or maybe you can get away with always using sys.stdin.readline() instead of
> raw_input()? Look into cmd.py for an example.
>
> Peter
>


cmd.py is the "battery included" I was thinking of last night.
Unfortunately it uses something that PyWin replaces.

However I did note that PyWin's version raises KeyboardInterrupt out of
its dialog box.

That's not ideal, but at least it gives me an idea what I need to trap
to exit.

 
Reply With Quote
 
Charles Krug
Guest
Posts: n/a
 
      01-29-2006
On 2006-01-28, Charles Krug <(E-Mail Removed)> wrote:
> On 2006-01-28, Peter Otten <(E-Mail Removed)> wrote:
>> Charles Krug wrote:
>>
>>> Is there a way to detect that I'm running the the PyWin interpreter so
>>> that I can bypass its raw_input behavior?

>>
>> You could test
>>
>> if pywin_specific_module in sys.modules:
>> # use workaraound
>>
>> Or maybe you can get away with always using sys.stdin.readline() instead of
>> raw_input()? Look into cmd.py for an example.
>>
>> Peter
>>

>
> cmd.py is the "battery included" I was thinking of last night.
> Unfortunately it uses something that PyWin replaces.
>
> However I did note that PyWin's version raises KeyboardInterrupt out of
> its dialog box.
>
> That's not ideal, but at least it gives me an idea what I need to trap
> to exit.
>


Okay, I poked around a bit more and found the initialization code that
does this:

sys.modules['__builtin__'].raw_input=Win32RawInput

Which is the substituted function.

Is there a way to access the original function that I want to use, or do
I need to come up with some other way to do console input?

Thanks

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Newbie: pywin problem Martin DeMello Python 5 08-03-2004 06:42 PM
[PyWin]Question About 'No module named pywin.framework.startup' The Jetman Python 0 07-27-2004 09:57 PM
pywin.mfc, win32ui, Windows common dialogs Miranda Evans Python 0 05-23-2004 09:21 PM
Hello World with pywin Helge Stenstrom Python 2 02-17-2004 04:52 PM



Advertisments