Like we have source() function to execute a R program in another R program in R studio, how do I execute a python program in another python program?
            Asked
            
        
        
            Active
            
        
            Viewed 8,956 times
        
    21
            
            
        - 
                    This question provides a related approach to this: [What is an alternative to execfile in Python 3?](https://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in-python-3?noredirect=1&lq=1) – divibisan Mar 29 '19 at 23:45
2 Answers
8
            Given 2 python scripts: first.py and second.py, the usual way to execute the first from the second is something in the lines of:
first.py:
def func1():
    print 'inside func1 in first.py'
if __name__ == '__main__':
    # first.py executed as a script
    func1()
second.py:
import first
def second_func():
    print 'inside second_func in second.py'
if __name__ == '__main__':
    # second.py executed as a script
    second_func()
    first.func1() # executing a function from first.py
Edits:
- You could also go for the simple execfile("second.py")if you wish (although it is only within the calling namespace).
- And a final option is using os.systemlike so:
 os.system("second.py").
 
    
    
        Idos
        
- 15,053
- 14
- 60
- 75
- 
                    2
- 
                    I agree with vpipkt. It might not be the most Pythonic way of doing things, but sometimes I just want to execute another Python script as though it were within the first script (which is what `source()` does in R). [This question](https://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in-python-3?noredirect=1&lq=1) was also helpful. – mickey Jan 08 '19 at 16:17
- 
                    Regarding note by @ldos on the first bullet of their edited answer: "(although it is only within the calling namespace)": to avoid this issue, we can use `runfile()` from the `sitecustomize` package so that the included script is run in its own namespace. In my scenario, this characteristic is particulary crucial because from the included script I need to access the `__file__` property which, when using `execfile()` resolves to the file name of the _calling_ script! (not useful to me, since inside the included script, I need to retrieve its directory location) – mastropi Feb 29 '20 at 16:08
1
            
            
        If you're used to sourcing directly from GitHub, you can use the requests package to download the raw *.py file with an http get, and then execute the file.
import requests
exec(requests.get('http://github.myorg.net/raw/repo/directory/file.py').text)
Disclaimer: I'm an R user learning Python, so this might be violating some Python best practices
 
    
    
        Nadir Sidi
        
- 1,706
- 2
- 9
- 12
