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 10 years ago.
I am quite comfortable with C/C++ but I felt that another language would surely help me. So, I decided that Python would be good language to start as I have heard many people talking about Python. I have the following questions :
Where do I start for Python ?
Do I have a compiler like Visual Studio for Python ? I use VS2010 for C/C++
Thanks in Advance.
Like most languages, reading a book might help
lpthw
is the suggested book for learning python. It will guide you through setup and more :)
Dive into python is a great one, will get you upto speed if you are already familiar to programming, which you are. Learn by building small and useful projects in each chapter.
Python website provides the python interpreter. which can be used. Python is not compiled like c/c++ but interpreted.
I'd suggest Head First Python. Even it seems a little childish when you start reading, it turns out to be very, very well suited to learn not only the basic concepts but to get an idea what the language is capable of and is used for (google app engine, python on android,...).
I think there are lots of python information throug internet, if you are a C++ programmer and already have programming knowlege you can just search for info there. Although you can just install the interpreter and start playing arround, by my experience its a fairly simple way of learning (interpreter + documentation)
Some interesting webpages:
http://www.python.org/
http://docs.python.org/py3k/tutorial/index.html
Some IDEs as visual studio but for python:
http://wingware.com/
http://www.eclipse.org/
A while ago, I wrote a blog post addressing the first part of your question:
http://codelike.com/blog/2011/07/07/a-jump-start-for-learning-python/
As for the second part: No, you don't need a compiler. Code is interpreted on the fly, which means you can type code in the Python shell (that comes with a Python installation) and instantly see what it does. That's a great way for exploring some language features. If you install iPython on top of Python, you even get auto-completion inside that shell.
It depends on what way of learning you prefer. I would recommend to read theory, play a little and write something useful using python.
Below are several points where to start at your choice.
Theory:
Official tutorial
Dive into Python book (for python 2)
Dive into Python 3
Learn Python The Hard Way by Zen A. Shaw
Learning Python: Powerful Object-Oriented Programming by Mark Lutz
Programming Python by Mark Lutz
Think Python by Allen B. Downey
Courses and video:
Google's Python Class
Python track at Codeacademy
Coursera's Introduction to Interactive Programming in Python
Playgrounds:
checkio.org - platform for competing in python programming, lots of tasks from easy to hard ones
pythonchallenge.com
I would recommend to read official tutorial and start playing with online tutorials that will guide you from simple "hello world" programs to more complex one, if you were newbie in programming. Then read Dive Into Python and go deeper.
In regards of IDEs there are several options, and you can try them to find what fits best for your goals.
IDE's: PyCharm, Eclipse + PyDev, Wing IDE.
Just Editor: vim or sublime or notepad++, I have used all of them and stopped on sublime.
Interactive interpreter: ipython - there are options to run it as a console or like a notebook on localserver. This is awesome tool and truly interactive programming experience. Watch some tutorials first. There are several very powerful things like matplotlib, numpy, scipy supported that makes this tool very efficient.
Also you have to take a look at virtualenv and virtualenvwrapper to configure your virtual environments.
I really enjoyed learning python from the python essential reference
As for the compiler part: Visual Studio is not a compiler. It's an IDE that uses the MSVC compiler. Python on the other hand is a interpreted dynamic language (well... it's not actually interpreted, as the interpreter compiles a module into bytecode when it imports it for the first time, so it's a bit of both, but these are technicalities that you need not worry about when you start learning the language)
For python you need:
the python iterpreter: http://www.python.org/getit/
an editor of your choice. I personally enjoy emacs, but if you're into the IDEs, then you could use PyDev or komodo or many many others.
To answer your second question, Python is an interpreted language so you don't need a compiler. So long as you have Python installed, just run the script.
You can use whatever IDE you prefer to write the code.
As swair said Dive into python is a great resource for experienced programmers in other languages.. If you want to stay in Windows Visual Studio environment you can give a chance to Iron Python http://ironpython.net/tools/ It is built in Visual Studio 2010.
But for a fresh start i recommend Python shell, iPython or PyCrust. PyCrust is my favorite.
Related
This question already has an answer here:
What IDE to use for Python? [closed]
(1 answer)
Closed 9 years ago.
I use for C/C++ Visual studio 2012 with Visual Assist X plugin.
Now I'm going to learn Python. I need good IDE for Python and my main requirement
-very good intelli/autocomplete feature in IDE ( I don't like notepad or Python shell )
Can you recommended IDE for my requirement?
I struggled a lot before finding a good IDE for Python. At the moment I'm using PyCharm which has a lot of features I got used to with other languages and IDEs, such as very good syntax highlighting, code completion, structure navigation, documentation linking, VCS integration (with live diff tool) and so on.
Note: it's not free though, but you can do a free and full-features 30-days trial.
very good intelli/autocomplete feature in IDE
It will be very difficult to find a good IDE for python. The main reason is that your requirement is very very difficult to be achieved, if not downright impossible, due to the fact that python is dynamically bound, so utilities can not be certain about what goes where (as they do in a statically bound languages, such as java or c#) so as to create a reliable autocomplete feature in an IDE.
That said, in my opinion you might be better served using a plain text editor (vim quickly comes to mind, if you are on windows something along the lines of notepad++ will do) and then use the python vm of your choice to run and/or debug your code.
If you are so inclined to use an IDE nonetheless, Aptana studio (or just Eclipse with pydev) might prove adequate. Visual Studio is also a choice if you choose to pair it with Python tools for Visual studio.
You may use APTANA, Geany or ipython for your practice! I would prefer APTANA or GEANY
Eclipse is also a good IDE for python too!
WingIDE is my preferred ide. It has pretty good intelligent fill.
These days I go with Sublime Text for editing everything (http://www.sublimetext.com) and bpython (http://bpython-interpreter.org) as my Python shell.
Perhaps these other threads on Stack Overflow may be of additional help:
What IDE to use for Python?
https://stackoverflow.com/questions/126753/is-there-a-good-free-python-ide-for-windows
Which is the best IDE for Python For Windows
I also relatively new to python (1 month..) after struggling with idlex for a few weeks ,i found pyscripter and im very happy with it ,has almost perfect auto-complete for python! As big plus .. it made me stop wishing there where a version of netbeans for python !
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 12 years ago.
Basically, me and a friend of mine are just planning to work on a Python project which would have GUI interface, and enable file transfer over and remote file listing. We have most of the tools which we are going to use, Glade, Python etcetera.
I just want to know if I should use an IDE or not.
I've heard only good things about Anjuta, but not convinced of its Python support; care to comment?
And also is there any other good IDE I should check out?
Currently I am just planning on coding as usual in vim.
The ability to debug using an IDE makes your life so much easier.
Python is a particularly strange language in that having a full-fledged IDE doesn't really add much (and some would argue that an IDE tends to severely limit your thinking-flow in Python). I've been using regular Vim and Gedit to develop in Python and never really missed using IDE.
Text editors like Vim or Emacs itself can be configured quite flexibly to match an IDE power though, so it doesn't really matter which way you go.
There are numerous IDEs you can check out. Take a look at PyDev, PIDA, Komodo, Eric.
I personally don't think IDEs add that much to software development (on this scale and in this language). Python has fine external debugging tools and refactoring is not that hard with a program of this size.
Do you currently use or want to use any features you miss in your current editor? If so, pick another one, else, stick with what you like most.
As long as it has version control integration you should be fine.
Personally I do most my Python coding in Vim, but once in a while I feel like using a full-IDE and I use Eclipse with Pydev at those times.
It depends on your own preference, some people absolutely love Vim and won't use anything else. Others just can't work without an IDE.
Here's a list of:
Python IDEs: http://wiki.python.org/moin/IntegratedDevelopmentEnvironments
Python editors: http://wiki.python.org/moin/PythonEditors
In terms of using an IDE or not, it doesn't matter. I prefer using an IDE since I like having the tools I need bundled up into one nice, neat little package that can handle all of my development. However, using a text editor is just as good, especially ones as powerful and extensible as vi(m) and (x)emacs. The real reasons for using an IDE, though, are code completion, management of indentation, code folding, refactoring support, and debugging.
If you want to check out other IDEs for Python development, I would suggest also looking at NetBeans and Eclipse with the appropriate plugins. I, personally, prefer NetBeans since I have a feeling that PyDev is going to be going downhill since Aptana bought them (previously, they ruined RadRails, which is the Eclipse plugin for Ruby on Rails development) and don't want to get comfortable with a tool that might not be useful long-term.
With Java, I'd say no IDE for beginners, because you have to understand CLASSPATH first.
With Python, I'd say PyCharm from JetBrains. IntelliJ is the best Java IDE; PyCharm is making my Python work a pleasure.
IMHO, not using IDE to develop is just like using typewriter to write a novel. Nobody said you can't, but why you have to try that hard when you already have laptop?
I code in Vim for python. If you want to use an IDE then I would recommend IntelliJ's PyCharm. I use vim because the actual editing is far superior and if you are a power user there is very little that you can't do easily.
PyCharm provides help with api by providing completion and helps with some basic refactoring. These advantages though wear of sooner than you would expect. I use grep and vim regex to do refactoring - its a bit more work than pycharm but if you can manage it then the advantages of vim clearly outweigh using an ide.
I assume that you are developing in a *nix environment, if you use windows then I would recommend using an Ide.
As opposed to some other guys here, I think that an IDE does add much to software development, even for a dynamically typed language like Python which makes it harder to do static analysis.
My preferred IDE for Python development is Eclipse with PyDev. Before that, I coded in Notepad++ which isn't much different than the PyDev editor in terms of features. PyDev has some great features that you won't find in a "normal" editor:
It shows warnings and syntax errors (almost) in realtime. A text editor won't tell me about typos, but PyDev does. As another example, unresolved imports or undefined functions (e.g. because of a typo) are marked as warnings/errors. And there are many more common mistakes that are automatically detected, and PyDev can be integrated with pylint so that warnings and errors from pylint are displayed with the usual icons in the editor.
Autocompletion by introspection
Outline view of the current module and its classes
Additionally, Eclipse itself is also great for any kind of programming project. I especially like the fully integrated interface - project explorer, editor, outline, console, problems overview, run configurations and so on. When using Vim, Emacs or similar, I guess you would have to install lots of plugins or custom scripts to achieve the same.
As you said you want to do a project, I think that Eclipse is a good choice. For quickly hacking a small Python script, it's overkill of course.
If you just start learning python/glade/gtk stack, I'd say you should start without an IDE just to learn how it works internally. This will help you later when your code will be bigger and more complex.
However, good IDE helps in so many ways I wouldn't recommend against using any in the long run. This article might help you decide whether you need any: http://infoworld.com/d/developer-world/infoworld-review-nine-fine-python-development-tools-374
it's horses for courses, personally i'm much happier with textmate or vim and a nice cup of coffee but it's what feels more comfortable to you.
there's no shame in using an IDE, if it's what gets your idea out there to the masses the most productive then use whatever you like.
however when starting out i'd favour something with intellisense as it'll teach you the basics as you type, give it a year and you'll be a master at it.
Two ways to approach this:
Use what you're used to. If you have used an editor in the past and know its quirks, stick with it. You'll waste less time figuring out how to work with the tool and spend more time on the actual project.
Use something new. Anjuta, vim, whatever, as long as you haven't spent too much time with it so far. You'll learn a whole lot of stuff besides your actual project, but the project itself won't be done as fast as could be.
Personally, I prefer 2. Always learn something new, as long as it's not crunch time and it-has-to-be-done-by-friday. An IDE can help you only so much, but when you're still in the learning phase the more time you spend on the code yourself, the better.
I'm not a Python programmer, but I prefer not to use IDEs.
The reason for this is that I find IDEs are often big and do too many things for me, whereas using Notepad++ and the command prompt allows me to trim things down to suit my needs rather than being surrounded by features that I don't use. This allows me to learn more easily, because I have more control over what happens.
Don't learn coding with an IDE. Code with it!
I find using an IDE to dramatically help my Python code productivity. In particular, using wingide makes coding in python a pleasure. It has all the normal things you would expect (syntax highlighting, auto-complete, etc) but the killer features are the debugger and the debug probe.
These two features are worth the cost of the program. It lets you see the live state of the application and try out python statements live at breakpoints. I find this especially helpful to explore the current state and to try out some code to see if it will work. I often write some of the trickier sections of code in the debug probe live and them copy them into my application. Very nice.
I have a friend who I am trying to teach how to program. He comes from a very basic PHP background, and for some reason is ANTI C#, I guess because some of his PHP circles condemn anything that comes from Microsoft.
Anyways - I've told him its possible to use either Ruby or Python with the VS2008 IDE, because I've read somewhere that this is possible.
But I was wondering. Is it really that practical, can you do EVERYTHING with Python in VS2008 that you can do with C# or VB.net.
I guess without starting a debate... I want to know if you're a developer using VS IDE with a language other than VB.net or C#, then please leave an answer with your experience.
If you are (like me) either a VB.net or C# developer, please don't post speculative or subjective answers. This is a serious question, and I don't want it being closed as subjective. ...
Thank you very much.
update
So far we've established that IronPython is the right tool for the job.
Now how practical is it really?
Mono for example runs C# code in Linux, but... ever tried to use it? Not practical at all, lots of code refactoring needs to take place, no support for .net v3.5, etc...
If you want to use Python together with the .NET Common Language Runtime, then you want one of:
Python.NET (extension to vanilla Python that adds .NET support)
IronPython (re-implementation of Python as a .NET language)
Boo (Python-like language that compiles down to C#-equivalent MSIL code)
Using Python in Visual Studio without using the CLR seems like a bit of a waste to me. Eclipse with PyDev would be a much better choice.
I find it odd that your friend is against C# but is ok with Visual Studio. There is, after all, an open source development environment for .NET called SharpDevelop. The C# language is a standard. .NET is free (as in beer) and there is an open source implementation of that platform called Mono. The only "un-free" thing is Visual Studio (though there are "Express" versions which are free as in beer).
This has been discussed before in this thread. I personally prefer eclipse and pyDev.
I don't know why you would want to - perhaps something like IronPython Studio would be a happy medium. But as I said I don't know why you would want to use Visual Studio for Python development when there are much better options available.
Always choose the right tool for the right job - just because you can drive a nail with the butt-end of your cordless drill doesn't mean that you should. Visual Studio was not designed for Python development and as such will not be a perfect environment for developing in it. Please use the list I have linked to choose a more appropriate editor from that list.
As a side note, I am wondering why your PHP friend refuses to use C# (a free, industry standardized language) but is okay using Visual Studio (an expensive, closed-source integrated development environment).
Firstly, there seems to be a question as to whether python (or various implementations) are as 'powerful' as C#. I'm not quite sure what to take powerful to mean, but in my experience of both languages it will be somewhat easier and faster to write a given piece of code in python than in C#. C# is faster than cpython (although if speed is desired, the psyco python module is well worth a look).
Also I would object to your dismissal of Mono. Mono is great on Linux if you write an application for it from scratch. It is not really meant to be a compatibility layer between Windows and Linux (see Wine!), and if you treat it as such you will only be disappointed.
It just seems to me that you are taking the wrong approach. If you want to convince him that not everything Microsoft is evil, and he is adamant about not learning C#, get him to learn Python (or Ruby, or LUA or whatever) until he is competent, and then introduce him to C# and get him to make his own judgement - I'm fairly in favour of open source, and am far from a rabid Microsoft supporter, but I tried C#, and found I quite liked it.
I think that getting him to use python and visual studio in a suboptimal way will turn him against both of them - far from your desired goal!
Go here for a discussion on the Visual Studio IronPython IDEs.
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 10 years ago.
I'm looking to set up my development environment at home for writing Windows applications in Python.
For my first piece, I'm writing a simple, forms-based application that stores data input as XML (and can read that information back.) I do want to set up the tools I'd use professionally, though, having already done a round of didactic programming.
What tools are professional python developers using these days? In order to have a working python environment, what version of the compiler should I be using? What editor is common for professionals? What libraries are considered a must-have for every serious python developer?
Specifically, which Windowing and XML libraries are de rigeur for working in Windows?
I like Eclipse + PyDev (with extensions).
It is available on Windows, and it works very well well. However, there are many other IDEs, with strengths and weakness.
As for the interpreter (Python is interpreted, not compiled!), you have three main choices: CPython, IronPython and Jython.
When people say "Python" they usually refer to "CPython" that is the reference implementation, but the other two (based, respectively, on .Net and Java) are full pythons as well :-)
In your case, I would maybe go on IronPython, because it will allow you to leverage your knowledge of .Net to build the GUI and treating the XML, while leaving the implementation of business logic to Python.
Finally, should you decide to use CPython, finally, there are several choices for working with xml:
minidom; included in the standard library
lxml, faster and with a better API; it means an additional installation on top of Python.
Lots of questions, most hard to answer correctly. First of all, most of python development happens on unix-like platforms. You will hit many walls during development on Windows box.
Python is not a compiled lanugage, current preferred version for production is 2.5. For environement setup you should take a look at virtualenv. Editor is a personal choice, many Python developers use Vim, you can customize it pretty well to suite your needs.
About libraries, Python is very strong around this area and it's really hard to say what is a must to know. If you want to handle XML, I would preffer lxml.
If you go for CPython, make sure you get the win32 extensions by Mark Hammond, either as a separate download which you install on top of the vanilla Python installation, or as part of ActiveState's ActivePython. It includes an integrated editor and debugger.
Jython has recently reached 2.5 compliancy, but we quickly ran into recursion limit issues.
The standard distribution includes IDLE, a graphical editor and debugger.
I like shells, so I'm using IPython for interactive work, and pydb as debugger (unfortunately, I had problems getting pydb to work under Windows).
"What tools are professional python developers using these days?"
Lots
"In order to have a working python environment, what version of the compiler should I be using?"
["compiler" is meaningless. I'll assume you mean "Python"]
We use 2.5.4. We'll be upgrading to 2.6 as soon as we've done the testing.
"What editor is common for professionals?"
We use Komodo Edit.
"What libraries are considered a must-have for every serious python developer?"
We use Django, XLRD, PIL, and a few others. We don't plan this kind of thing in advance. As our requirements arrive, we start looking for libraries. We don't "pre-load" a bunch of "must-have" libraries. The very idea is silly. We load what we need to solve the problems we have.
There are no set standards in these matters, and for good reasons:
there is a fair amount of good choice
different people are productive with different tools
different tools and libraries are suited for solving different problems
That said, I think it's a valid question exactly because there is a fair amount of good choice. When there is too much choice people often do not chose at all and move on. You still need to do your own research to decide what is best for you but you may find here some good starting points.
Here is what I use professionally on windows:
python 2.5.4
latest wxPython
XRC Resource Editor from the wxPython docs & demos for the grunt of the tedious GUI design
lxml or gnosis utils for xml
WingIDE Professional
Taking the headline question literally, the answer has to be IronPython. The 2.0 releases are equivalent to CPython 2.5, and the 2.6 release (currently at beta2) is intended to match CPython 2.6 (full 2.6 release some time in the next couple of months). With either you can use the state of the art in Windows GUI frameworks, i.e. WPF; and you get the whole .net XML support libraries (excepting Linq to XML, which relies on clever bits of C# that IronPython cannot yet emulate).
I've used NetBeans Python plug-in happily as an IDE for IronPython using WPF.
The answer would depend on what you want to do with Python. If you want to do web programming, Python is blessed with many web frameworks. The most popular ones are: Django, Pylons, and Turbogears. There's also Google App Engine, where you can deploy your Python webapp (based on GAE framework) to Google's infrastructure. If you want to do Desktop programming then there is PyQT and TkInter, or you can even try using Java Swing with Jython. And if you want to do Mobile app programming then there is Python for S60 which is backed by Nokia.
Python is interpreted language, so there is no compiler (although the interpreter also compiles your python module into bytecode). I would recommend using Python 2.6 as it has some syntax and libraries that is different compared to 2.5. You can also start learning Python 3.0 too.
There is several IDE that is good for Python. You don't have to get yourself attached into one editor/IDE because most of them are good ones. For the commercial ones there is WingIDE which is really focus on making IDE for Python and I would really recommend IntelliJ IDEA with Python plugin which is really nice if you often look at the libraries in your Python environment. For the free ones (as others have said) there is Komodo Edit or you can also try Netbeans with Python plugin.
As for the must-have libraries, this is depending on what you want to do. What kind of application you want to develop with Python. But I think every Python developer should consider PIL for imaging library. I also use simplejson quite often, because I prefer using JSON rather than XML. If you are using XML though, you can use lxml as it is really fast in parsing XML.
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 10 years ago.
I have been reading through this wonderful website regarding the recommended Python IDEs and have narrowed it down to either
WingIDE
KomodoIDE
which you guys will recommend for the purpose of developing Pylons apps? I know that most questions have been asked pertaining to Python IDEs but how about Python web framework IDEs which is a mishmash of various templating languages and Python itself.
One con i have to raise about WingIDE on Windows is that it has an AWFUL interface (probably cos of the GTK+ toolkit?)
I have been using e-text editor all the while and increasingly been dissatisfied with it especially when its unable to do correct syntax highlighting at times. Furthermore I am hoping syntax coloration can be done for Mako templates.
Thank you very much all and have a great day!
Did you try Eclipse with PyDev plugin? Which is FREE plus works for any OS.
Screenshots at the PyDev website.
(source: sourceforge.net)
+1 for WingIDE, It supports debugging pylons app.
Netbeans has implemented beta support of python development. It unfortunately doesn't specifically support any templating languages that I know of, but I've been satisfied so far with its syntax highlighting and auto-complete (especially from imported modules).
Since everyone has a different preference for their coding environment, I suggest you just try out every IDE/editor you can get your hands on; so you can find the best mix-match of features that you're specifically looking for.
I use Stani's Python Editor for most Python-esque editing tasks on Windows & Linux. I use Notepad++ for editing HTML, XML, CSV, and other text based "code like" files on Windows. They are both free, and meet my needs for home based weekend projects.
I have used Wing IDE 101, but I never the full versions. I did not do enough with WingIDE to develop any muscle memory, so it still feels a little artificial to me. YMMV.
To a certain degree, the IDE will influence how you think about the process of creating and debugging code. So you should take some time to try a few different options and see which makes the most sense to you.
Try Aptana Studio... It's eclipse+pydev+web stuff, it doesnt have any specific pylons stuff or mako support. But eclipse+pydev alone is great + all the nice jscript+html+css stuff aptana adds.
+1 for Spyder. Never heard of it before reading this page. Working great so far.
after very very careful comparison, KomodoIDE 5.1 is most suitable for my purposes.
Reasons:
Extensibility
Support for Mako and YUI (required by me)
Native interface support (no GTK unfamiliarity)
Support for Mercurial SCM (required by me)
thats all I guess. I am extremely satisfied with KomodoIDE and have just shelled out some money to buy it.
I figured when making a choice of tools, spend a day or two (yes, it takes time) trying them out and choosing what best suits your day-to-day purposes. If its just your first time coding, using a standard free tool or open source tool is far more useful than expending the time to find out the best tool.
Only after some degree of expertise is acquired, you have a very narrow spectrum of requirements/preferences which will make choosing a tool far easier.
Wow, I've also been looking for a good Pylons web app IDE. Seems like KomodoIDE 5.1 kicks some serious ass. I love the support for Mako and that it supports pretty much all of the SCMs.
I've been using Textmate, but KomodoIDE will take over from now onwards
I'v been using Spyderlib for some time, its really worth trying.
http://code.google.com/p/spyderlib/
http://groups.google.com/group/pylons-discuss/browse_thread/thread/4f41aef28be741e5