Python Scripts - Suggested Workflow?
This is a good question. In fact, I asked myself the same question last week.
When I work headless with my Raspberry Pi or Intel Edison, I can work fine by using SSH and a full install of vim. On the Omega, vi seems to be installed by default but I really prefer vim (syntax highlighting and the way it behaves). The vi installed on the Omega does not even have visual mode installed, to select multiples lines. It is possible to install vim with opkg, but it fills the limited memory pretty quickly.
PyCharm looks great but IMHO is overkill and it seems like you have to pay an annual fee to use it.
Sublime Text is goot too but a license must be purchased for "continued use" at 70$. Also the SFTP plugin is 30$. I'm not really happy using a trial or evaluation version.
On Windows I use Notepad++ a lot, it's free and includes by default a really great plugin called NppFTP. Granted you installed sftp on your Omega (opkg install openssh-sftp-server) you can use NppFTP in SFTP mode to open your files on the Omega and when you save them, they are automatically updated. You can open an SSH session with putty and run your code from there, using Notepadd++ to manage your files.
Use what suits you the best, but I personnally prefer Notepad++ as it is free and you won't be harassed by pop-ups prompting you to buy the software. (and you won't need to get the software illegally)
I like using Notepad++ also. To transfer the Python file, I use WinSCP and then use a putty session to test.
I hope the Console will be as good as Adafruit's Raspberry Pi WebIDE.
From a linux computer you can mount the omega via sshfs -- this needs openssh-sftp-server to be installed on the omega.
Then you can work with your preferred editor of your choice on the mounted files.
Thanks for all the great feedback everyone!!
In summary it looks like the three main options are:
- Become a command line ninja - SSH w/ VI/Nano. (Not ideal for big projects IMHO)
- FTP/SFTP to push the files, SSH to execute. (Several different approaches for this, Notepad++ w/ NppFTP, NetBeans, Python IDE + FTP Client, etc).
- ACE Web Editor in Console
I like the idea of doing the development locally, so I have a perpetual copy that I won't accidentally nuke when I do an Omega upgrade (plus I can use tools like GitHub Desktop and an IDE to manage larger projects.)
It looks like the best option is to use a text editor/IDE that will automatically do the FTP push when the file is edited... but I had another idea. Does OpenWRT Linux have any support for DropBox or similiar services? In this way we can use any editor/IDE and the DropBox like service will take care of syncing the files back and forth. Thoughts?
@Johannes-Zellner I just saw your post after I was done composing my last one. I'm currently using Windows, buy maybe there is a similar tool to mount in a similar way... would be much more simple than the Dropbox approach I proposed above.
@Fred-Blais PyCharm does have a free community version, of course you will still need to (s)ftp the files to the Omega outside of PyCharm. As for over-kill, I think this depends upon your application and whether you can or want to write and debug with a modern IDE or just use print statement.
While I have not tried it yet, PyCharm does allow for remote debugging of applications which can very powerful. Imagine running your app on the Omega, but debugging on your Mac/PC. It also lets you setup a Remote Python Interpreter - which again I have not tried. These are likely professional features which does have a license fee. $89/ 1st year, $71 2nd year, $53 after that. And really - if you are a professional making your living writing software these are amazing tools for that price, IMHO.
Disclaimer: I am not affiliated with Jetbrains in anyway. I'm just a super happy customer of their products.
@Chris Zeh if you're using github to store your code, a good workflow seems to me to be:
- Write code on your dev environment
- Push to github
- git pull on the Omega
- Run the code on the Omega
You could just leave a single ssh window open into the Omega for this and even have a small shell script to do the pull and run if you wanted.
@fader, thanks for the idea. I think this would be too cumbersome. I typically wouldn't commit a change until I've tested it on the Omega, so I imagine this solution would have a huge amount of "test" commits.
Write your code on your native platform once complete or ready for test merely launch MobaXterm hook up a session of your choice ftp or sftp then drag and drop to your Omega directory. Simple and fast.