How do I run Python code from Sublime Text 2?

PythonIdeSublimetext2Sublimetext

Python Problem Overview


I want to set up a complete Python IDE in Sublime Text 2.

I want to know how to run the Python code from within the editor. Is it done using build system? How do I do it ?

Python Solutions


Solution 1 - Python

Tools -> Build System -> (choose) Python then:

To Run:

      Tools -> Build

      -or-

      Ctrl + B

      CMD + B  (OSX)

This would start your file in the console which should be at the bottom of the editor.

To Stop:

       Ctrl + Break or Tools -> Cancel Build

       Fn + C (OSX)

You can find out where your Break key is here: http://en.wikipedia.org/wiki/Break_key.

Note: CTRL + C will NOT work.

What to do when Ctrl + Break does not work:

Go to:

> Preferences -> Key Bindings - User

and paste the line below:

{"keys": ["ctrl+shift+c"], "command": "exec", "args": {"kill": true} } 

Now, you can use ctrl+shift+c instead of CTRL+BREAK

Solution 2 - Python

Edit %APPDATA%\Sublime Text 2\Python\Python.sublime-build

Change content to:

{
	"cmd": ["C:\\python27\\python.exe", "-u", "$file"],
	"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
	"selector": "source.python"
}

change the "c:\python27" part to any version of python you have in your system.

Solution 3 - Python

On Mac OS X, save your file with a .py extension. Press + B. It runs in a window below.

enter image description here

Solution 4 - Python

To RUN press CtrlB (answer by matiit)

But when CtrlB does not work, Sublime Text probably can't find the Python Interpreter. When trying to run your program, see the log and find the reference to Python in path.

[cmd:  [u'python', u'-u', u'C:\\scripts\\test.py']]
[path: ...;C:\Python27 32bit;...]

The point is that it tries to run python via command line, the cmd looks like:

python -u C:\scripts\test.py

If you can't run python from cmd, Sublime Text can't too.
(Try it yourself in cmd, type python in it and run it, python commandline should appear)

SOLUTION

You can either change the Sublime Text build formula or the System %PATH%.

  • To set your %PATH%:
    *You will need to restart your editor to load new %PATH%

    • Run Command Line* and enter this command: *needs to be run as administrator
      SETX /M PATH "%PATH%;<python_folder>"
      for example: SETX /M PATH "%PATH%;C:\Python27;C:\Python27\Scripts"

    • OR manually: (preferable)
      Add ;C:\Python27;C:\Python27\Scripts at the end of the string. Setting Path in Win7

  • To set the interpreter's path without messing with System %PATH% see this answer by ppy.

Solution 5 - Python

You can use SublimeREPL (you need to have Package Control installed first).

Solution 6 - Python

If using python 3.x you need to edit the Python3.sublime-build

(Preferences > Browse packages > Python 3)

to look like this:

{
  "path": "/usr/local/bin",
  "cmd": ["python3", "-u", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.python"
}

Solution 7 - Python

[ This applies to ST3 (Win), not sure about ST2 ]

To have the output visible in Sublime as another file (+ one for errors), do this:

  1. Create a new build system: Tools > Build Systems > New Build System...
  2. Use the following configuration:

{
    "cmd": ["python.exe", "$file", "1>", "$file_name.__STDOUT__.txt", "2>", "$file_name.__STDERR__.txt"],
    "selector": "source.python",
    "shell": true,
    "working_dir": "$file_dir"
}

  1. For your Python file select the above build system configuration file: Tools > Build Systems > {your_new_build_system_filename}
  2. ctrl + b
  3. Now, next to your file, e.g. "file.py" you'll have "file.__STDOUT__.py" and "file.__STDERR__.py" (for errors, if any)
  4. If you split your window into 3 columns, or a grid, you'll see the result immediately, without a need to switch panels / windows

Solution 8 - Python

In python v3.x you should go to : Tools->Build System->New Build System .

Then, it pop up the untitled.sublime-build window in sublime text editor.Enter setting as:

{

    "cmd": ["path_to_the_python.exe","-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

To see the path, Type following in terminal as:

python
>>> import sys
>>>print(sys.executable)

You can make more than one Build System but it should default save inside Packages of Sublime text with .sublime-build extension.

Then, select the new Build System and press cltr+b or other based on your os.

Solution 9 - Python

Cool U guys, I just found this:

http://ptomato.wordpress.com/2012/02/09/geek-tip-running-python-guis-in-sublime-text-2/

It explains (like one of the answers above) how to edit this exec.py in the default directory.

I had the problem that my PYTHON UI APPLICATION would not start. I commented out the last line from the following snipped:

    # Hide the console window on Windows
    startupinfo = None
    if os.name == "nt":
        startupinfo = subprocess.STARTUPINFO()
        #startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

and, taaadaaaa, I could start my app by pressing Ctrl+B. Funny line anyways, uh? And a big thank you to whoever wrote that article ;-)

Solution 10 - Python

I solved this problem :

> Preferences –> Browse Packages –> Default 

Open the exec.py file, near line 41-42, the code should look like this :

for k, v in proc_env.iteritems():
    proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())

then delete it or edit it as :

try:    
    for k, v in proc_env.iteritems():
        proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
except:
    print 'foobar'

Solution 11 - Python

I ran into the same problem today. And here is how I managed to run python code in Sublime Text 3:

  1. Press Ctrl + B (for Mac, + B) to start build system. It should execute the file now.
  2. Follow this answer to understand how to customise build system.

What you need to do next is replace the content in Python.sublime-build to

{
    "cmd": ["/usr/local/bin/python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
}

You can of course further customise it to something that works for you.

Solution 12 - Python

seems the Ctrl+Break doesn't work on me, neither the Preference - User...

use keys, Alt → t → c

Solution 13 - Python

You can access the Python console via “View/Show console” or Ctrl+`.

Solution 14 - Python

I had the same problem. You probably haven't saved the file yet. Make sure to save your code with .py extension and it should work.

Solution 15 - Python

One thing to note about the aforementioned build system: you can write (and use) custom .sublime-build files or even per project build_systems clause (in your project settings). This allows you to do useful things like a fancy test runner with ANSI colors output.

For even more "full IDE" features, you can use the excellent SublimePythonIDE package:

  • code completion (intel)
  • jump to definition & object description
  • proper linting/pep8
  • supports different interpreters with virtualenv

Disclosure: I've contributed a PR to that package, and I use it all the time, but there are others.

Solution 16 - Python

Use a real python console alongside Sublime

Both Sublime's build system and SublimeREPL (the answers above) are limited in that you can't easily interact with the workspace variables after you run your file.

If you want to run a script, then work in a REPL-like fashion (like you would in an IDE), then I recommend having Sublime open alongside an IPython console. Using AutoHotKey (Windows) or AutoKey (Linux), you can set this up such that a single shortcut will copy the filename (or just the selected code) and then paste this in the console to run the file.

Detailed instructions for Linux or Windows

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
QuestionneoView Question on Stackoverflow
Solution 1 - PythonmatiitView Answer on Stackoverflow
Solution 2 - PythonppyView Answer on Stackoverflow
Solution 3 - PythonboboboboView Answer on Stackoverflow
Solution 4 - PythonQwertyView Answer on Stackoverflow
Solution 5 - PythoninvisView Answer on Stackoverflow
Solution 6 - PythonDaniel RomeroView Answer on Stackoverflow
Solution 7 - PythonellockieView Answer on Stackoverflow
Solution 8 - Pythonsusan097View Answer on Stackoverflow
Solution 9 - PythonanhoppeView Answer on Stackoverflow
Solution 10 - PythonRheaView Answer on Stackoverflow
Solution 11 - PythonHuang C.View Answer on Stackoverflow
Solution 12 - PythonMark KView Answer on Stackoverflow
Solution 13 - PythonpokeView Answer on Stackoverflow
Solution 14 - PythonOnatView Answer on Stackoverflow
Solution 15 - PythontutuDajujuView Answer on Stackoverflow
Solution 16 - Pythonhugke729View Answer on Stackoverflow