As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've been an Eclipse user for the last 3 years or more. I do Java EE (and Spring) development in it and so far I've done 90% of my tasks without having to touch the mouse. Typically my Eclipse setup is as follow:
Subclipse (or alternatively I use command line)
m2clipse (Maven Eclipse plugin)
Data Source Explorer (dealing with SQL)
The typical Eclipse activities I do (and would like to transfer that to Vim/Emacs) are (this is for multi-module/multi-projects/multi-folder source code):
Refactor (rename method throughout the whole "open project")
Jump to class implementation
Search for all usage of a particular class or method
Updating dependencies (3rd party JARs) via maven pom.xml
Jump to the 3rd party library implementation (maven can download the source.jar if local repository does not have it, eclipse will bring me to the actual Java code for let say, Hibernate entity manager implementation).
Write and run unit-test
All of the above activities would not require me to use mouse. There are a few activities where I would need to use a little bit of mouse such as Global Search file
Lately I've been wanting to try development using VMs. The idea here is to create a barebone VM (let's say to use Ubuntu Server) and start coding there or use Putty/SSH.
I have a MacBook Pro 13" which would benefit of using VIM/Emacs or any lightweight editor.
There are 2 major goals:
Mobility (as in, travelling and coding)
VM as development environment
Tools I'd like to use are as follow:
Linux
Ruby, Python, PHP (and occasionally maybe even Java but definitely not Microsoft .NET)
Any RDBMS
Any build/dependency system
Unit-testing framework
What would you recommend: VIM? Emacs? Others? What about other tools? Gnu Screen, ctags, etc.
Help me build my dream environment: lightweight, productive, easily replicable :)
Thanks!
If you ask a question which involves "vim OR emacs" you will never get an useful answer. It's a religious question, which does not have a correct answer! That said, you should clearly use Vim! ;-)
But seriously: Vim is much more lightweight, so it might better suite the scenario you are describing. Vim can be scripted in different languages and you can find many useful scripts at www.vim.org.
Emacs is "heavier", but Lisp is a very powerful scripting languages. So Emacs is much more of a general tool than just a text editor. IDE functionality (like project management) is something I'm missing from time to time in Vim. There are some scripts to do that, but I don't like them. If you need that, I would go for Emacs.
I am an Emacs guy (using vi only to edit configuration files under /etc). I think that with Emacs, you should start it at most daily (and it is very different with vim), and you should configure it in your .emacs file. For example, I compile using the F12 key, with (global-set-key [f12] 'recompile) in my .emacs.
I am vim guy, using it for Perl scripting for around 6 years - and happy with it still - so using it for writing any scripts you said should also be easy & interesting in vim. Once start learning vim - you will definitely like it very much because of the tons of features it has !
I would like to highlight a couple of vim plugins which can give you an IDE feel ! ( but cant make it as real IDE ! )
Make Vim as Your Perl IDE Using perl-support.vim Plugin
Ctags and Taglist: Convert Vim Editor to Beautiful Source Code Browser for Any Programming Language
Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
And I believe vim definitely doesn't need mouse !
And you can find a couple of other features explained here in series of articles vim tips and tricks ( some of them were written by me. )
For Java development Eclipse has lots of features which you'll miss from Emacs or VIM. However, there is a project which makes it possible to access these features from other editors. You may find it useful to make up for missing features.
By the way, if you approach other editors with an Eclipse mindset then almost certainly you will be disappointed, because these editors are built on different philosophies. Their strengths lay elsewhere than the strengths of Eclipse.
Either of those text editors will have a learning curve. That being said I have successfully used emacs to do the following tasks that are in line w/ what you've asked:
Write PL/SQL and execute it on an oracle DB all from the editor.
Write, Compile, Run java.
Edit pom files.
Keep a pretty good TODO list in org mode.
You can launch a shell in emacs, and that feature alone does MOST of what you've asked for (SVN, make/ant/mvn/etc).
If you're jumping into one of these editors and hoping for pretty eclipse and vis studio features such as the green junit bar, i'm not sure that they exist. Eclipse' refactor tool works pretty well too and I don't know what is possible in emacs. Though with emacs, I've found that someone has typically written some extension to do what i want, you just need to be able to find it and learn how to use it. I'm an emacs neophyte at best but in scaled down projects I've found it to be pretty efficient and I don't have to take my hands off the keyboard very much.
Disclaimer(java/ee/spring eclipse developer by day that messes around with lua and the love framework using emacs at night)
Related
This question already has an answer here:
Closed 11 years ago.
Possible Duplicate:
What IDE to use for Python?
Hi all,
I'm looking for either a lightweight IDE or a text-editor (with plugins, of course) for writing Python code. Some of the features I'd like the software to provide are as follows:
1) Auto-complete/suggest
2) Multi-tab
3) Auto-format (on save if it is possible)
4) Syntax highlighting
5) Easy navigation between .py code (in Eclipse, if you use F3, you can jump to the Class/Interface file)
6) Expand/Collapse (more known as Folding?)
7) Integrate with code-checking specific to Python (code analysis, unit-test tools, etc)
8) [Optional] Source tree (browsing/navigation)
I prefer to use keyboard to navigate around because I'm using a laptop (with limited display size as well) and I'd like to avoid using mouse.
Update: Please list the plugin names as well if the out-of-the-box doesn't provide them.
Thanks
You mention Eclipse - what about PyDev, a Python IDE for Eclipse?
edit - also, this question has an incredibly comprehensive list of Python IDEs, sorted by feature. Might be worth a look.
Wingware's Python IDE fulfills all of your requirements, and I do consider it to be the best Python IDE around. That being said, it's a commercial product and not available free of charge, though Wingware offers noncommercial/open-source licensing.
There is python.el (written by Emacs community) and python-mode.el (written by Python community) for Emacs. Also, rope, ropemacs, and a few more. Look at EmacsWiki, you will find something for sure if you are open to use Emacs.
If you're on Windows, I would suggest you give Python Tools for Visual Studio. Might not be lightweight, but it sure is nice.
Cruder look, but very lightweight and extremely powerful: you could look at using Vim as a Python IDE.
Could anyone tell me how to use pure Python without Cocoa support in Xcode? I can only find the Cocoa-Python template on the Internet.
Thanks in advance.
If you are just trying to write pure Python command line tools, using Xcode is like using a big sledge hammer to hit a tiny nail, in other words, probably not the best tool for the job. There are some old posts out there about how to set up a pure Python Xcode project, like this one, but, in the end, you might be better off using an editor you're already familiar with, like emacs, or, if you don't mind spending a little bit of money, TextMate, all along with a free vcs like mercurial or git. Or take a look in MacPorts for those and other options.
Just about the best IDE for editing and running Python code is actually still emacs. The python-mode for emacs does a wonderful job of maintaining whitespace and, with a bit of configuration, emacs is truly a powerful editor.
Pretty radically different than your typical GUI editor, certainly, and some find it quite distasteful. I've personally used emacs, mostly, for editing Python since 1992 or so.
Google will reveal all, including a native version of Emacs for Mac OS X.
A lot of people like eclipse with PyDev for python, although I don't know how wel it works on OS X with apple's mishandling of java.
Even though I am using BBEdit, I found Wingware Python editor did a good job in exploiting the introspected data of Python modules. Purely designed for Python. Give it a try.
http://www.wingide.com/
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
A specific example: becoming familiar with django's project source code (core, contrib, utils, etc.). Example of a useful tool: ctags - it allows you to "jump" to the file+location where a function/method is defined. Wondering about other tools that developers use (example: is there a tool that given a function x(), lists the functions that call x() and that are called by x()?). Thanks.
Edit: added an answer with an aggregate of tools mentioned so far in other answers
The following is an aggregate of tools mentioned in other answers...
cscope
http://cscope.sourceforge.net/
wikipedia entry: http://en.wikipedia.org/wiki/Cscope
cscope is a console mode or text-based graphical interface ... It is often used on very large projects to find source code, functions, declarations, definitions and regular expressions given a text string.
pycscope
http://pypi.python.org/pypi/pycscope/
generates a cscope index of Python source trees
ctags and exuberant ctags
http://ctags.sourceforge.net/
http://ctags.sourceforge.net/ctags.html
wikipedia entry: http://en.wikipedia.org/wiki/Ctags
Ctags is a program that generates an index (or tag) file of names found in source and header files of various programming languages. Depending on the language, functions, variables, class members, macros and so on may be indexed. These tags allow definitions to be quickly and easily located by a text editor or other utility.
Eclipse:
http://www.eclipse.org/
wikipedia entry: http://en.wikipedia.org/wiki/Eclipse_%28software%29
Eclipse is a multi-language software development platform comprising an IDE and a plug-in system to extend it. It is written primarily in Java and can be used to develop applications in Java and, by means of the various plug-ins, in other languages as well, including C, C++, COBOL, Python, Perl, PHP, and others.
PyDev
http://pydev.sourceforge.net/
"Pydev is a plugin that enables users to use Eclipse for Python and Jython development -- making Eclipse a first class Python IDE"
Komodo Edit
http://www.activestate.com/komodo_edit/
wikipedia entry: http://en.wikipedia.org/wiki/ActiveState_Komodo
Komodo Edit is a free text editor for dynamic programming languages introduced in January 2007. With the release of version 4.3, Komodo Edit is built on top of the Open Komodo project.
It was developed for programmers who need a multi-language editor with broad functionality, but not the features of an IDE, like debugging, DOM viewer, interactive shells, and source code control integration.
Prashanth's call graph (visualization) tool
http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/
Just thought I'd share a link to an interesting small fun script I've found long time ago, that draws a graph of function calls. It works only for simple cases, so "as is" it's more fun than useful.
rope/ropemacs
http://rope.sourceforge.net/ropemacs.html
Ropemacs is a plugin for performing python refactorings in emacs. It uses rope library and pymacs.
http://www.enigmacurry.com/2008/05/09/emacs-as-a-powerful-python-ide/
Wing IDE
http://www.wingware.com/
Wing IDE has goto-definition, find uses, a source browser, refactoring, and other code intelligence features that should help. Another good way to understand unfamiliar Python code is to set a breakpoint, run to it in the debugger, and then go up and down the stack. In Wing Professional you can also use the Debug Probe to interact with and try out things in the debug runtime state (it's a Python shell that runs in the context of the current debug stack frame).
You can maybe try cscope! Wikipedia says that
cscope is often used to search content within C or C++ files, but it can be used to search for content in other languages such as Java, Python, PHP and Perl.[citation needed]
And you can also dig in this project.
Many (or even most, I should say) IDE's help you in this by enabling you do go to variable and function definitions, often by just Ctrl+click, or showing you class overviews where you can see all methods and attributes a class has including those inherited, and letting you go to their definition, etc, etc, etc. I can't recommend such a tool highly enough, it's very time-saving for development.
I personally use WingIDE, which is excellent and has all these features, but you should also check out KomodoEdit and Eclipse+PyDev. There maybe more that I don't know of, and it's fully possible that vim and emacs have some sort of plugins for this.
I think Komodo Edit and PyDev allows you to jump to python function defs.
is there a tool that given a function x(), lists the functions that call x() and that are called by x()?
Just thought I'd share a link to an interesting small fun script I've found long time ago, that draws a graph of function calls. It works only for simple cases, so "as is" it's more fun than useful.
For normal Python development personally I use GNU Emacs with rope/ropemacs (found a video showing the features) and sometimes Eclipse with PyDev.
This is subjective so I think it should probably be a community wiki. That said, the best thing you can probably do to make browsing large projects is to be familiar with hotkeys provided in your favourite IDE. Using the keyboard to browse through large source code is much easier than manually scrolling through text, highlighting text and fumbling through an IDE with a mouse.
Document it as you go. Leave trails, improve the structure, and keep notes. By the time you've found you way around the enter codebase, you'll have a good map.
I like Eclipse and the PyDev plugin. This combination has been very useful to me.
You should notice that cscope targets only the UNIX, Linux OSs.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm using Notepad++ for python development, and few days ago I found out about free Komodo Edit.
I need Pros and Cons for Python development between this two editors...
I have worked a bit with Python programming for Google App Engine, which I started out in Notepad++ and then recently shifted over to Komodo using two excellent startup tutorials - both of which are conveniently linked from this blog post (direct: here and here).
Komodo supports the basic
organization of your work into
Projects, which Notepad++ does not
(apart from physical folder
organization).
The custom commands
toolbar is useful to keep track of
numerous frequently-used commands
and even link to URLs (like online
documentation and the like).
It has a working (if sometimes clunky)
code-completion mechanism.
In short, it's an IDE which provides all the benefits thereof.
Notepad++ is simpler, much MUCH faster to load, and does support some basic configurable run commands; it's a fine choice if you like doing all your execution and debugging right in the commandline or Python shell. My advice is to try both!
I just downloaded and started using Komodo Edit. I've been using Notepad++ for awhile. Here is what I think about some of the features:
Komodo Edit Pros:
You can jump to a function definition, even if it's in another file (I love this)
There is a plugin that displays the list of classes, functions and such for the current file on the side. Notepad++ used to have a plugin like this, but it no longer works with the current version and hasn't been updated in a while.
Notepad++ Pros:
If you select a word, it will highlight all of those words in the current document (makes it easier to find misspellings), without having to hit Ctrl+F.
When working with HTML, when the cursor is on/in a tag, the starting and ending tags are both highlighted
Anyone know if either of those last 2 things is possible in Komodo Edit?
I use Komodo edit. The main reasons are: Intellisense (not as good as VisualStudio, but Python's a hard language to do intellisense for) and cross-platform compatibility. It's nice being able to use the same editor on my Windows machine, my linux machine, and my macbook with little to no change in feel.
I use both Komodo Edit and Notepad++.
Notepad++ is a lot quicker to launch and it's more lightweight, so I often use it for quick one-off editing.
I use Komodo Edit for major projects, like my django and wxPython applications. KE is a full-featured IDE, so it has a lot more features.
Main advantages of Komodo Edit for programming Python:
Manage groups of files as projects
Use custom commands to run files, run nosetests/pylint, etc.
Auto complete & syntax checking
Mozilla extension system, with several useful extensions available
Write macros in JavaScript or Python
Spell checking
Some of the little things that Notepad++ is missing for Python development:
Doesn't auto-indent after a colon
You can't set tabs/spaces on a file-type basis (I like to use tabs for HTML)
No code completion or tooltips
No on-the-fly syntax checking
As far as I know , Notepad++ doesn't show you the docstring each method has .
A downside I found of Notepad++ for Python is that it tends (for me) to silently mix tabs and spaces. I know this is configurable, but it caught me out, especially when trying to work with other people using different editors / IDE's, so take care.
I haven't used Komodo yet (the download never quite finished on the slow connection I was on at the time), but I use Eclipse with PyDev regularly and enjoy the "IDE" features described by the other respondents. However, I'm also regularly frustrated by how much of a resource hog it is.
I downloaded Notepad++ recently (much smaller download size ;-) ) and have been enjoying it quite a bit. The editor itself is nice and fast and it looks to be extensible. I'm hoping to copy some of my favorite features from IDE into Notepad++ and migrate, at some distant point in the future.
If I had to choose between Notepad++ and Komodo i would choose PyScripter ;.)
Seriously I consider PyScripter as a great alternative...
Downloaded both myself. Like Komodo better.
Komodo Pros: Like it better. Does more. Looks like an IDE. Edits Django templates
Notepad++ Cons: Don't like it as much. Does less. Looks less like and IDE.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I'm about to start a new job where the coding practices are heavily centered around TDD and refactoring, and whose primary development language is Python. I come from the Java world, and have been a confident user of Eclipse for a good, long time. When not working in Java, I use emacs.
I'm looking for an IDE for Python that will give me a lot of the capabilities I've grown used to with Eclipse, not only for refactoring but in terms of code completion, project management, SCM integration (currently CVS, but likely to switch to git one of these days) et al.
What IDE should I use?
My 2 pennies, check out PyCharm
http://www.jetbrains.com/pycharm/
(also multi-platform)
Have tried many different (Kate, Eclipse, Scite, Vim, Komodo): each one have some glitches, either limited functions, or slow and unresponsive. Final choice after many years: Emacs + ropemacs + flymake. Rope project file open dialog is extremely quick. Rope refactoring and code assist functions are super helpful. Flymake shows syntax mistakes. Emacs is the most configurable editor. I am very happy with this config. Python related part of config is here: public.halogen-dg.com browser/alex-emacs-settings/configs/cfg_python.el
I use TextMate for all my Python programming needs. It's not an IDE per se, but it does a lot of stuff that an IDE does (without all the cruft of an IDE). It has syntax highlighting, code folding, integration with various SCMs through the use of additional bundles (I know it supports SVN, Git, Mercurial, Darcs, and probably a few others). It's also quite extensible and customizable (again, through the use of bundles). It also has a basic concept of projects. One place where it doesn't shine, though, is in code completion; some bundles have limited support for code completion, but it's generally not as amazing as that of most language-specific IDEs. Given how awesome TextMate is, though, I don't know sacrificing that. TextMate's definitely made me much more productive.
Pydev for Eclipse, as others have mentioned, is good.
Netbeans has a beta Python plugin that is a little rough around the edges, but could turn into something really cool.
Additionally there is a long list of programming centric text editors for the mac, that may or may not fit your needs.
Textmate - costs money, people love this program, but I haven't used it enough to see what all the fuss is about.
Jedit - Java based text editor, has some nice features, but the startup time isn't great (due to Java).
CarbonEmacs - Decent Emacs port.
AquaEmacs - Better Emacs port.
TextWrangler - Lite, free (as in beer) verision of BBEdit.
BBEdit - The old guard. The defacto editor before Textmate stole its limelight. Expensive.
Smultron - Very nice editor, the UI is similar to Textmate.
Idle - Python's own little editor, has some nice features, but also some major problems. I've personally found it too unstable for my usage.
Sublime Text - This is really sweet text editor that has some surprisingly good Python support.
Pycharm - Another solid full on IDE for Python.
Eclipse with Pydev works best for me on any platform.
I really enjoy using PyCharm. http://www.jetbrains.com/pycharm/
macvim + pyflakes.vim
I like Spyder, it has many tools, such as profiling, intelligent indentation helper and a good autocompletion support
https://code.google.com/p/spyderlib/
I usually use either komodo edit or aquamacs with ropemacs. Although I should warn you, IDE features won't be what you're used to if you're coming from a Java or C# background. I personally find that powerful IDEs get in my way more than they help.
UPDATE: I should also point out that if you have the money Komodo IDE is worth it. It's the paid version of Komodo Edit.
If you have a budget for your IDE, you should give Wingware Professional a try, see wingware.com .
I've used WingIDE and have been very happy. Intellisense is pretty good, some other things are a bit wacky but overall it's a very productive tool
If you are looking for an interactive environment and not needing to code modules, I would suggest IPython. Though this is developed with scientists/statisticians in mind, it will run just as well without any of the scientific packages installed. The features are powerful, with code completion, integrated help, integrated debugging, etc., and it functions as a notebook with Markdown and MathJax integration. By far the best choice for those that need powerful features without wishing to load megabytes of GUI into RAM--since it is browser based, it is used in your always loaded chrome/safari instance. ;-)
Eclipse PyDev plugin.
http://pydev.sourceforge.net/
since you are familiar with Eclipse maybe you are interested in Pydev
Python support on netbeans is surprisingly good, and comes with most of the features you're looking for.
TextMate or Panic's Coda. NetBeans works very well, if you want a full-blown kitchen sink IDE.
"Which editor/IDE for ...?" is a longstanding way to start a "My dog is too prettier than yours!" slapfest. Nowadays most editors from vim upwards can be used, there are multiple good alternatives, and even IDEs that started as C or Java tools work pretty well with Python and other dynamic languages.
That said, having tried a bunch of IDEs (Eclipse, NetBeans, XCode, Komodo, PyCharm, ...), I am a fan of ActiveState's Komodo IDE. I use it on Mac OS X primarily, though I've used it for years on Windows as well. The one license follows you to any platform.
Komodo is well-integrated with popular ActiveState builds of the languages themselves (esp. for Windows), works well with the fabulous (and Pythonic) Mercurial change management system (among others), and has good-to-excellent abilities for core tasks like code editing, syntax coloring, code completion, real-time syntax checking, and visual debugging. It is a little weak when it comes to pre-integrated refactoring and code-check tools (e.g. rope, pylint), but it is extensible and has a good facility for integrating external and custom tools.
Some of the things I like about Komodo go beyond the write-run-debug loop. ActiveState has long supported the development community (e.g. with free language builds, package repositories, a recipes site, ...), since before dynamic languages were the trend. The base Komodo Edit editor is free and open source, an extension of Mozilla's Firefox technologies. And Komodo is multi-lingual. I never end up doing just Python, just Perl, or just whatever. Komodo works with the core language (Python, Perl, Ruby, PHP, JavaScript) alongside supporting languages (XML, XSLT, SQL, X/HTML, CSS), non-dynamic languages (Java, C, etc.), and helpers (Makefiles, INI and config files, shell scripts, custom little languages, etc.) Others can do that too, but Komodo puts them all in once place, ready to go. It's a Swiss Army Knife for dynamic languages. (This is contra PyCharm, e.g., which is great itself, but I'd need like a half-dozen of JetBrains' individual IDEs to cover all the things I do).
Komodo IDE is by no means perfect, and editors/IDEs are the ultimate YMMV choice. But I am regularly delighted to use it, and every year I re-up my support subscription quite happily. Indeed, I just remembered! That's coming up this month. Credit card: Out. I have no commercial connection to ActiveState--just a happy customer.
I've searched on Google for an app like this for a while, and I've found only options with heavy and ugly interfaces.
Then I opened Mac App Store and found CodeRunner. Very nice and clean interface. Support many languages like Python, Lua, Perl, Ruby, Javascript, etc. The price is U$10, but it's worth it!
I've been using an Evaluation copy of Sublime Text. What's good is it doesn't really expire.
It's been good so far and was really easy to get started with.
I may be a little late for this, but I would recommend Aptana Studio 3.x . Its a based on eclipse and has everything ready-to-go for python. It has very good support for DJango, HTML5 and JQuery. For me its a perfect web-development tool. I do HTML5 and Android development too, this way I do not need to keep switching different IDE's. It my all-in-one solution.
Note: you need a good amount of RAM for this to be snazzy !! 4+ GB is awesome !!
Visual Studio Code + Official Python Plugin
Here you see an overview of its current Python features:
https://code.visualstudio.com/docs/languages/python
Chocolat
http://chocolatapp.com
It's lightweight and offers Code Completion. Costs money.
EDIT:
Apparently Chocolat was an interesting option in 2013 but since then many others came up and development stalled. Nowadays I recommend Visual Studio Code + Python Plugin.
You might want to look into Eclim, an Eclipse server that allows you to use Eclipse functionality from within your favorite text editor. For python-related functionality, it uses Rope, PyFlakes, and PyLint under the hood.