ipython environment question

S

Shane Geiger

"""
I'm trying to import ipython shell (which works great!) to set some
variables and then run a function (which doesn't work).
It seems like such a simple thing. Here's an example script to show
what I'm trying to do.

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

--
Shane Geiger
IT Director
National Council on Economic Education
(e-mail address removed) | 402-438-8958 | http://www.ncee.net

Leading the Campaign for Economic and Financial Literacy
 
M

Marc 'BlackJack' Rintsch

Shane Geiger said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,585
Members
45,080
Latest member
mikkipirss

Latest Threads

Top