[IPython-user] Got bdist_wininst working for IPython ...

Fernando Perez Fernando.Perez at colorado.edu
Sun Jan 9 19:54:43 CST 2005

Viktor Ransmayr wrote:

> No problem. I'm happy if I can contribute. - Now about this next version.
> I don't know how much time you spent looking at my modifications yet.
> However I still have a few questions about the further proceeding:
> 1) There is no need to install pywin32 for the installation process on 
> window.
>     - At least not for bdist_wininst. - Should anything be checked 
> during the
>     import or do you think a simple message, stating that pywin32, ctypes
>    and readline are recommended is sufficient ?

I'd say printing a user message would be a very good idea.  ipython will 
_work_ without this stuff, but it will lack some of its nicest functionality 
(readline and coloring).  So a prominent message in this direction would 
certainly help.  A simple

   import ctypes
except ImportError:
   print 'get ctypes from http://....'

and similar for readline would be very good to have.  No need to bother users 
who already have them with this, though.

> 2) I'm not sure what should be done in the case of cmd=bdist ? - What I did
>     not like about the way "IPython-0.6.6.zip" worked, was the fact that 
> it did
>     install files outside of ..\Lib\site-packages\IPython\ without 
> giving me any
>     means to deinstall. (Other than saving the complete output of the 
> install-
>     cmd into a log-file and removing everything by hand :-)
>     Do you have an idea/ a plan or do you think that simply removing the
>     usage of the post-installation script completely from the zip-archive is
>     sufficient and/or acceptable ?

Mmh, I think I'm a bit confused here.  I guess our ultimate goal is the following:

1.  An ipython_setup.exe real windows installer is available, which can both 
install AND uninstall ipython by the usual windows mechanisms, leaving no junk 
behind it after uninstallation.

2.  The ability for windows users, if necessary, to run by hand in a terminal 
'python setup.py install' and have the thing work as well.   I think it's 
acceptable in this scenario to lose uninstallation capabilities, since they 
don't really exist with a manual install under unix either.  Under unix, if 
you want uninstall capabilities, you need to use a package manager (rpm, apt, 
fink), so the same applies for windows (the .exe installer playing the role of 
a package manager).

My understanding is that we already have #1 with your work.  It's just a 
matter of keeping #2 as an option, for those who download the sources.  I'm 
even willing to stop distributing .zips once the .exe installer becomes 
available: a source install for windows users will be at that point a much 
more rare occurrence, and I expect it to be done only by very technically 
minded users.  Since winzip can handle .tar.gz files just fine, they can 
always grab that.

This means that it's OK to remove the hacks I had to inject an 'install' 
command into sys.argv in setup.py for windows users.   The question I have is, 
what does setup.py see when it is called by the .exe installer?  What does 
sys.argv look like in that scenario?  We basically need some way of 
distinguishing if it's being called by the .exe installer, who will in turn 
execute the post_install script itself, or by a user at a command line, case 
in which we need to run it ourselves.  Is this possible?



More information about the IPython-user mailing list