Skip to content

Commit c765887

Browse files
committed
Run directories containing __main__.py (fixes bpython#530)
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
1 parent 6e69e89 commit c765887

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

bpython/args.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from __future__ import print_function
66
import os
7+
import os.path
78
import sys
89
import code
910
from optparse import OptionParser, OptionGroup
@@ -110,10 +111,15 @@ def exec_code(interpreter, args):
110111
Helper to execute code in a given interpreter. args should be a [faked]
111112
sys.argv
112113
"""
113-
with open(args[0], 'r') as sourcefile:
114+
plusmain = os.path.join(args[0], '__main__.py')
115+
if os.path.isdir(args[0]) and os.path.exists(plusmain):
116+
path = plusmain
117+
else:
118+
path = args[0]
119+
with open(path, 'r') as sourcefile:
114120
source = sourcefile.read()
115121
old_argv, sys.argv = sys.argv, args
116-
sys.path.insert(0, os.path.abspath(os.path.dirname(args[0])))
117-
interpreter.locals['__file__'] = args[0]
118-
interpreter.runsource(source, args[0], 'exec')
122+
sys.path.insert(0, os.path.abspath(os.path.dirname(path)))
123+
interpreter.locals['__file__'] = path
124+
interpreter.runsource(source, path, 'exec')
119125
sys.argv = old_argv

0 commit comments

Comments
 (0)