Running python script inside ipython

PythonPathIpython

Python Problem Overview


Is it possible to run a python script (not module) from inside ipython without indicating its path? I tried to set PYTHONPATH but it seems to work only for modules. I would like to execute

%run my_script.py

without being in the directory containing the file.

Python Solutions


Solution 1 - Python

from within the directory of "my_script.py" you can simply do:

%run ./my_script.py

Solution 2 - Python

How to run a script in Ipython
import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py

That should do it

Solution 3 - Python

In python there is no difference between modules and scripts; You can execute both scripts and modules. The file must be on the pythonpath AFAIK because python must be able to find the file in question. If python is executed from a directory, then the directory is automatically added to the pythonpath.

Refer to https://stackoverflow.com/questions/1186789/what-is-the-best-way-to-call-a-python-script-from-another-python-script for more information about modules vs scripts

There is also a builtin function execfile(filename) that will do what you want

Solution 4 - Python

The %run magic has a parameter file_finder that it uses to get the full path to the file to execute (see here); as you note, it just looks in the current directory, appending ".py" if necessary.

There doesn't seem to be a way to specify which file finder to use from the %run magic, but there's nothing to stop you from defining your own magic command that calls into %run with an appropriate file finder.

As a very nasty hack, you could override the default file_finder with your own:

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder

To be honest, at the rate the IPython API is changing that's as likely to continue to work as defining your own magic is.

Solution 5 - Python

Not exactly the answer to your question, but you can drop into ipython at the end of a script's execution by using the -i parameter to ipython:

ipython -i my_script.py

At the end of the script you're dropped into the ipython prompt with the script's variables available to you, just like python -i.

Solution 6 - Python

for Python 3.6.5

import os
os.getcwd()
runfile('testing.py')

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTyler DurdenView Question on Stackoverflow
Solution 1 - PythonrakkeView Answer on Stackoverflow
Solution 2 - PythonCubeBot88View Answer on Stackoverflow
Solution 3 - PythonSnakes and CoffeeView Answer on Stackoverflow
Solution 4 - PythonecatmurView Answer on Stackoverflow
Solution 5 - PythonkristianpView Answer on Stackoverflow
Solution 6 - PythonAlinafeView Answer on Stackoverflow