[IPython-dev] Creation of .ipython directory

Brian Granger ellisonbg.net at gmail.com
Thu Apr 2 22:55:41 EDT 2009


Thanks for the reply, I am glad I asked, because it sounds like to
code for this is really spread out currently.  We can definitely can
consolidate this.

Brian

On Wed, Apr 1, 2009 at 2:37 AM, Fernando Perez <fperez.net at gmail.com> wrote:
> Hey,
>
> sorry I never replied to this...
>
> On Fri, Mar 20, 2009 at 9:48 PM, Brian Granger <ellisonbg.net at gmail.com> wrote:
>> Hi,
>>
>> Previously, the only IPython command line program that used the
>> .ipython directory was "ipython" itself.  Now, however, other command
>> line programs (ipcluster, ipcontroller, ipengine) also use the
>> .ipython directory.  A user just found a bug where they ran
>> "ipcluster" *before* "ipython" was ever run on their system.  Thus,
>> "ipcluster" couldn't find the .ipython directory and an exception was
>> raised.
>
> Ugly.
>
>> So, I have a question:  where in the IPython code base is the code
>> that looks to see if the .ipython directory exists and then creates it
>> if not?
>
> iplib, around line 1115:
>
>    def user_setup(self,ipythondir,rc_suffix,mode='install'):
>        """Install the user configuration directory.
>
>        Can be called when running for the first time or to upgrade the user's
>        .ipython/ directory with the mode parameter. Valid modes are 'install'
>        and 'upgrade'."""
>
> http://bazaar.launchpad.net/~ipython-dev/ipython/trunk/annotate/head%3A/IPython//iplib.py
>
>> Should this same code be called by all IPython processes that
>> might need the .ipython directory?
>
> That seems reasonable to me, but it needs to be made more robust:
>
> In [1]: _ip.IP.user_setup('/home/fperez/.ipython/','rc')
> **********************************************************************
> Welcome to IPython. I will try to create a personal configuration directory
> where you can customize many aspects of IPython's functionality in:
>
> /home/fperez/.ipython/
> Initializing from configuration
> /home/fperez/usr/lib/python2.5/site-packages/IPython/UserConfig
> WARNING:
>
> There was a problem with the installation:
> [Errno 17] File exists: '/home/fperez/.ipython/'
> Try to correct it or contact the developers if you think it's a bug.
> IPython will proceed with builtin defaults.
> Please press <RETURN> to start IPython.
> **********************************************************************
>
> Basically, just a matter of changing it so that it can be called
> anytime and *it* checks whether that dir exists.  Today, the code is
> called in ipmaker:
>
>    # Create user config directory if it doesn't exist. This must be done
>    # *after* getting the cmd line options.
>    if not os.path.isdir(opts_all.ipythondir):
>        IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
>
> If the check was moved inside, this could safely be called at startup
> by others without fear of the above error message.
>
> Cheers,
>
> f
>



More information about the IPython-dev mailing list