ipython environment question

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Tue May 8 11:00:37 EDT 2007


In <mailman.7420.1178634651.32031.python-list at python.org>, Shane Geiger
wrote:

> Run the script and then try to change the variable project_name from the 
> ipython prompt and then type create()
> and the new value you assigned will *not* be used.  I tried to use "def 
> create(project_name = project_name):"  Even that didn't work.
> 
> What slight of hand is necessary?
> 
> import os, sys
> 
> project_name = 'python_packages'
> group_name = 'sgeiger'
> repo = '/var/svn'
> 
> def create(repo=repo,group_name=group_name,project_name=project_name):
> #def create():
>    #os.system("sudo mkdir -p " + repo )
>    #os.system("sudo svnadmin create " + repo)
>    #os.system("sudo chown -R " + group_name + " " + repo)
>    print "sudo mkdir -p " + repo + '/' + project_name
>    print "sudo svnadmin create " + repo + '/' + project_name
>    print "sudo chown -R " + group_name + " " + repo + '/' + project_name
> 
> if __name__ == '__main__':
>    sys.argv.append('-cl')
>    from IPython.Shell import IPShellEmbed
>    ipshell = IPShellEmbed()
>    print "Please set these variables:  project_name, group_name   ...and 
> then type create()"
>    ### I even tried to put all my
>    ipshell() # this call anywhere in your program will start IPython

You have to call the function with arguments.  The default values are only
evaluated once when the ``def`` statement is executed, not every time the
function is called.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list