Show More
@@ -91,6 +91,43 b' def needs_local_scope(func):' | |||||
91 | func.needs_local_scope = True |
|
91 | func.needs_local_scope = True | |
92 | return func |
|
92 | return func | |
93 |
|
93 | |||
|
94 | import imp, os | |||
|
95 | ||||
|
96 | def find_module(name, path=None): | |||
|
97 | """imp.find_module variant that only return path of module | |||
|
98 | """ | |||
|
99 | file, filename, _ = imp.find_module(name, path) | |||
|
100 | if file is None: | |||
|
101 | return filename | |||
|
102 | else: | |||
|
103 | file.close() | |||
|
104 | return filename | |||
|
105 | ||||
|
106 | def get_init(dirname): | |||
|
107 | """Get __init__ file path for module with directory dirname | |||
|
108 | """ | |||
|
109 | fbase = os.path.join(dirname, "__init__") | |||
|
110 | for ext in [".py", ".pyw", ".pyc", ".pyo"]: | |||
|
111 | fname = fbase + ext | |||
|
112 | if os.path.isfile(fname): | |||
|
113 | return fname | |||
|
114 | ||||
|
115 | ||||
|
116 | def find_mod(name): | |||
|
117 | """Find module *name* on sys.path | |||
|
118 | """ | |||
|
119 | parts = name.split(".") | |||
|
120 | if len(parts) == 1: | |||
|
121 | basepath = find_module(parts[0]) | |||
|
122 | else: | |||
|
123 | basepath = find_module(parts[0]) | |||
|
124 | for submodname in parts[1:]: | |||
|
125 | basepath = find_module(submodname, [basepath]) | |||
|
126 | if os.path.isdir(basepath): | |||
|
127 | basepath = get_init(basepath) | |||
|
128 | return basepath | |||
|
129 | ||||
|
130 | ||||
94 | # Used for exception handling in magic_edit |
|
131 | # Used for exception handling in magic_edit | |
95 | class MacroToEdit(ValueError): pass |
|
132 | class MacroToEdit(ValueError): pass | |
96 |
|
133 | |||
@@ -1557,11 +1594,22 b' Currently the magic system has the following functions:\\n"""' | |||||
1557 | There is one special usage for which the text above doesn't apply: |
|
1594 | There is one special usage for which the text above doesn't apply: | |
1558 | if the filename ends with .ipy, the file is run as ipython script, |
|
1595 | if the filename ends with .ipy, the file is run as ipython script, | |
1559 | just as if the commands were written on IPython prompt. |
|
1596 | just as if the commands were written on IPython prompt. | |
|
1597 | ||||
|
1598 | -m: specify module name to load instead of script path. Similar to | |||
|
1599 | the -m option for the python interpreter. For example: | |||
|
1600 | ||||
|
1601 | %run -m example | |||
|
1602 | ||||
|
1603 | will run the example module. | |||
|
1604 | ||||
1560 | """ |
|
1605 | """ | |
1561 |
|
1606 | |||
1562 | # get arguments and set sys.argv for program to be run. |
|
1607 | # get arguments and set sys.argv for program to be run. | |
1563 | opts,arg_lst = self.parse_options(parameter_s,'nidtN:b:pD:l:rs:T:e', |
|
1608 | opts,arg_lst = self.parse_options(parameter_s,'nidtN:b:pD:l:rs:T:em:', | |
1564 | mode='list',list_all=1) |
|
1609 | mode='list',list_all=1) | |
|
1610 | if opts.has_key("m"): | |||
|
1611 | modulename = opts.get("m")[0] | |||
|
1612 | arg_lst = [find_mod(modulename)] | |||
1565 |
|
1613 | |||
1566 | try: |
|
1614 | try: | |
1567 | filename = file_finder(arg_lst[0]) |
|
1615 | filename = file_finder(arg_lst[0]) |
General Comments 0
You need to be logged in to leave comments.
Login now