Setting up Atom as a Python IDE [A How To Guide]

Written by DavidDataScience | Published 2020/02/13
Tech Story Tags: python | python-tips | ide | developer-tools | atom-editor | integrated-development-environment | python-top-story | hackernoon-top-story

TLDR Setting up Atom as a Python IDE [A How To Guide] The guide shows how you can setup and maintain a python friendly development environment from within Atom. In a separate article I (will) show how to setup Microsoft Visual Studio Code in a similar manner. The guide is tested and valid for the latest version of Atom 1.40-40-Python 3. (It may work for earlier versions of Atom, but untested.) The guide includes a Linter Package (Source Code Checker) and a Script Package.via the TL;DR App

In this article, I demonstrate how you can setup and maintain a python friendly development environment from within Atom.  Ideally, a developer wants to reduce the amount of window/application switching as much as possible and create repeatable workflows. 

Contrary to the above parody cartoon, Atom is a respectable editor and keybinding plugins are available for those of us that grew up with Emacs and Vim so that we can have a mouse-free coding experience.
Atom was developed initially from with Github, but by it’s open-source and extensible nature, a strong community that provides support and additional plugin functionality, it has become a very powerful – but free – tool for development.
I use Atom primarily for Python, Julia, shell script and web-development. In a separate article I (will) show how to setup Microsoft Visual Studio Code in a similar manner.  Code is also open-source, free, and supported by a large community, and it has advantages if you also code for various compilers and proprietary databases. 
Note: Towards the end of this article I discuss how you can automate the saving of a list of all of your plugins so that you can reinstall them as a group later, keep in a code repository, or migrate to a new development machine.  Myself, I keep my configuration in the cloud, so I can continue to work at a client location with a predictable setup.
These instructions are tested and valid for
Atom 1.40
and
Python 3
and up. (It may work for earlier versions of Atom, but untested.)

Steps:

1. Download Atom
“Atom is a free and open-source text and source code editor for macOS, Linux, and Microsoft Windows with support for plug-ins written in Node.js, and embedded Git Control, developed by GitHub. Atom is a desktop application built using web technologies.” https://flight-manual.atom.io/getting-started/sections/why-atom/
You can use Atom's UI to install the plug-ins listed below using Atom's Settings View: just type
ctrl +
(on Linux or a PC), and 
cmd +
(on a Mac).
Alternatively to bring up the Settings View, you can click on the Install tab, and type the package name you want to install into the Search packages search box.
For the rest of us who actually like to use the terminal window, I provide shell commands below.

2.   Download a Linter Package (Source Code Checker)
“Linter is a base linter provider for the hackable Atom Editor. Additionally, you need to install a specific linter for your language. You will find a full list on atomlinter.github.io.
It provides a top-level API to its consumer so that they can visualize errors and other types of messages with ease.”
or, on the command line:
$ apm install linter
Now we also need to download a language specific linter plugin (I like flake8, but there are choices listed on the atomlinter.github.io page as above:
or, on the command line:
To use this plugin flake8 will need to be installed on your system. If it is not already installed, you can install flake8 by typing the following in a terminal:
$ pip install flake8
$ apm install linter-flake8
3. Download a Python AutoComplete Package and AutoFormatter
“Python completions for packages, variables, methods, functions, with their arguments. Powered by your choice of Jedi or Kite.”  Jedi is a locally based library, and thus I myself prefer that one over Kite, which requires an online library.
or, on the command line:
$ apm install autocomplete-python
“Uses autopep8 installed to format python code according to pep8 guidelines”
or, on the command line:
$ pip install autopep8
$ apm install python-autopep8
4. Download a Script Package
“Run scripts based on file name, a selection of code, or by line number.” This is super useful for testing your code from within Atom instead of going to a different terminal window, and it is powerful because it is selection-based, which means you can run snippets versus whole files.
or, on the command line:
$ apm install script
5. Download a File-Icons Package
“File icons similar to the vscode-icons pack for Visual Studio Code (https://github.com/vscode-icons/vscode-icons) and built off of the logo-file-icons pack (https://atom.io/packages/logo-file-icons) with tweaks and
additions.  Tree view ui tweeks to closer match that of visual studio code.” 
As I tend to use both Visual Studio Code and Atom, this helps me maintain consistency, and I like them better than the Atom defaults.
or, from the command line:
$ apm install atom-file-icons
6.   Download a Syntax Highlighting Theme
“A syntax theme for Atom Material UI. Inspired by Mattia Astorino's  SublimeText theme.“
or, from the command line:
$ apm install atom-material-syntax
7. Download and Install Minimap
The Minimap package displays a Minimap preview of your file on the right hand side of your editor.  The minimap-git-diff and minimap-highlight-selected plugins are also useful.
https://atom.io/packages/minimap

or, from the command line:
$ apm install minimap
$ apm install minimap-git-diff 
$ apm install minimap-highlight-selected 
8.   Download and install a Jupyter Notebook Plugin
“A package that works like the Jupyter Notebook, but inside Atom. It's registered as an opener for .ipynb files — try opening one!"
or, from the command line:
$ pip install jupyter jupyter_kernel_gateway
$ apm install jupyter-notebook
Alternatively, you can look at the Hydrogen package:
Hydrogen runs code interactively, allows you to inspect data, and plot. All the power of Jupyter kernels, inside your favorite text editor. It supports Python, R, JavaScript and other Jupyter kernels.
Checkout the Documentation and Medium blog post to see what you can do with Hydrogen.
9. Improve version control support for Atom
Because I work for several clients, I am often switching between Github, gitlab and Bitbucket for different repositories. Please look search for the following at https://atom.io/packages:
  • git-control
  • git-plus
  • git-blame
  • git-time-machine
  • gitlab
  • open-on-bitbucket
10. Using version control (or cloud drives) for configuration portability

Use to version control your Atom config file, and any other config files that you may have.
Linux:
~/.atom/config.cson
Windows:
%USERPROFILE%\.atom\config.cson
  [or commonly]
C:\Users\{name}\AppData\Local\atom\config.cson
You can then host and clone your Git repository on Github, gitlab, Bitbucket, etc., and retrieve it on other computers simply by running:
$ git clone https://github.com/{username}/{repo}
As with any other source-control repository, you can then keep it up to date (to upload changes) and (to download changes).
git push
and
git pull
As mentioned in the note at the beginning of the article, in order to track a common list of installed packages, at the terminal shell execute:
$ apm list --installed --bare > ~/.atom/package.list
And then add that file to you source-controlled Git repository also.
To install the packages automatically back into a fresh installation of Atom:
$ apm install --packages-file ~/.atom/package.list
An example of my
package.list
file is as below:
atom-file-icons@0.7.1
atom-julia-run@1.0.5
atom-material-syntax@1.0.8
autocomplete-python@1.16.0
busy-signal@2.0.1
git-control@0.9.0
git-plus@8.7.1
gitlab@0.1.3-7
Hydrogen@2.12.1
indent-detective@0.4.0
ink@0.11.1
intentions@1.1.5
jackhammer-syntax@1.1.0
julia-client@0.10.1
language-julia@0.19.1
latex-completions@0.3.6
linter@2.3.1
linter-flake8@2.4.0
linter-matlab@1.2.0
linter-ui-default@1.8.0
minimap@4.29.9
open-on-bitbucket@0.5.0
predawn-syntax@1.0.4
python-autopep8@0.1.3
script@3.18.1
tool-bar@1.2.0
uber-juno@0.2.0
Conclusion
In this article, I demonstrated how you can setup and maintain a python friendly development environment from with Atom (https://atom.io/). 
As a developer who wants to reduce the amount of window/application switching as much as possible and create repeatable workflows, I hope that you find this equally useful. I look forward to your comments and suggestions for improvements!
@DavidDataScience
Agree or disagree with some of the ideas presented in this article? Let
us know your thoughts on Digg.
Looking for more coding articles? Subscribe to our newsletter in the footer below!

Written by DavidDataScience | Machine Learning and Data Science Evangelist, HPC Cloud Specialist, Founder and Innervator
Published by HackerNoon on 2020/02/13