Python development tools

C

cutems93

Hello,

I am new to python development and I want to know what kinds of tools people use for python development. I went to Python website and found several tools.

1. Automated Refactoring Tools
2. Bug Tracking
3. Configuration And BuildTools
4. Distribution Utilities
5. Documentation Tools
6. Integrated Development Environments
7. Python Debuggers
8. Python Editors
9. Python Shells
10. Test Software
11. Useful Modules
12. Version Control

What else do I need? Also, which software is used in daily base? I know version control software and bug tracking software are used almost everyday by developers. Which software is used less often?

Also, I will use GUI interface for Python. What kind of widget toolkits do you recommend? I know there are GTK+ and Qt.

Thank you in advance!
-Min S.-
 
G

Giorgos Tzampanakis

Hello,

I am new to python development and I want to know what kinds of tools
people use for python development. I went to Python website and found
several tools.

1. Automated Refactoring Tools
2. Bug Tracking
3. Configuration And BuildTools
4. Distribution Utilities
5. Documentation Tools
6. Integrated Development Environments
7. Python Debuggers
8. Python Editors
9. Python Shells
10. Test Software
11. Useful Modules
12. Version Control

What else do I need? Also, which software is used in daily base? I know
version control software and bug tracking software are used almost
everyday by developers. Which software is used less often?

Also, I will use GUI interface for Python. What kind of widget toolkits
do you recommend? I know there are GTK+ and Qt.

Thank you in advance!
-Min S.-

I think you are asking too much in a single post. Each of the points
you list could be a long discussion on its own.
 
R

rurpy

The Python wiki at http://wiki.python.org/moin/ has a lot of info on
most of your subjects. I've included links to there for some of your
items below.

All your items below also have comercial products available but I
an not familiar with any so all me comments below pertain only to
free tools.
1. Automated Refactoring Tools I wish.
2. Bug Tracking
This is not really Python specific so any bug tracking tool
you want to use will work. There are several written in Python.
The Python (cpython) project uses one called Roundup.
3. Configuration And BuildTools 4. Distribution Utilities http://wiki.python.org/moin/DistributionUtilities
5. Documentation Tools
The most popular documentation tools for Python projects is Spinx, probably
because the Python documentation itself is build with Spinx.
see also http://wiki.python.org/moin/DocumentationTools
6. Integrated Development Environments http://wiki.python.org/moin/IntegratedDevelopmentEnvironments
7. Python Debuggers
Python comes with a builtin debugger called pdb. There are also a number
of other add-on debuggers like pydb.
See also: http://wiki.python.org/moin/PythonDebuggingTools
8. Python Editors
Any editor for programming is fine. This is mostly personal taste and
experience. It is a frequent topic of discussion here so a web search
should turn up some info.
9. Python Shells
10. Test Software
Python comes with modules that will assist you in writing
your own tests, most notable unittest and doctest. There are
a number of third party modules too:
See http://wiki.python.org/moin/UnitTests
11. Useful Modules
The main repository for public Python modules is PyPi:
See https://pypi.python.org/pypi
12. Version Control
Git and Mercurial (hg) seem to be the two most popular "modern" VCS
used by Python developers with Bazaar (bzr) right behind them.
There was a discussion here very recently on that subject,
see https://groups.google.com/d/topic/comp.lang.python/MD4Oqq9GJiQ/discussion
What else do I need? Also, which software is used in daily base? I
know version control software and bug tracking software are used
almost everyday by developers. Which software is used less often?

This really depends on what kind of development you will be
doing and who else you will be doing it with. A minimal development
environment is a shell, python interpreter, and an internet connection.
Also, I will use GUI interface for Python. What kind of widget
toolkits do you recommend? I know there are GTK+ and Qt.

Python comes with a GUI toolkit called tkinter.
The other major GUI toolkit is wxPython although it is not yet
available for Python3.
See also http://wiki.python.org/moin/GuiProgramming

Hope this helps get you started.
 
R

Roy Smith

1. Automated Refactoring Tools
I wish.[/QUOTE]

Why? I've never seen the appeal of these. I do plenty of refactoring.
It's unclear to me what assistance an automated tool would provide.
This is not really Python specific so any bug tracking tool
you want to use will work. There are several written in Python.
The Python (cpython) project uses one called Roundup.

Pick a bug tracker because its features fit your requirements, not what
language it's written in.

We've been using Asana (https://asana.com) for a while. I can't say I'm
in love with it, but it's worth looking at. It's intended more as a
project planner, but the dividing line between project planning and bug
tracking is a bit hazy.
Python comes with modules that will assist you in writing
your own tests, most notable unittest and doctest.

I resisted nose (https://nose.readthedocs.org/) for quite a while, but I
started using it in the past year and I'm slowly becoming addicted to
it. At this point, I would only recommend unittest to somebody who was
coming from an Xunit/Junit background and wanted something with the same
look and feel.
 
R

rurpy

Why? I've never seen the appeal of these. I do plenty of refactoring.
It's unclear to me what assistance an automated tool would provide.

I've often wanted something that would help globally change
things like function and method names including across multiple
files. Even variable names in large functions (ideally functions
should be small enough that this is not a problem but sometime
shit happens). I am not great at picking good names to begin
with and often code drift makes them even worse with time.
Editor search and replace doesn't cut it.

Other things like finding all uses of various objects/functions
etc would also be useful now and then but I suppose that is a
common IDE capability?
 
R

Roy Smith

Other things like finding all uses of various objects/functions
etc would also be useful now and then but I suppose that is a
common IDE capability?

$ find . -name '*.py' | xargs grep my_function_name

seems to work for me. I suppose a language-aware grep would be even
better, because then it wouldn't find my_function_name when it's
embedded in docstrings, comments, and the like.

On the other hand, you probably want to find those too. If you refactor
the name and don't find those, you end up with broken docstrings and
broken comments.
 
S

Steven D'Aprano

Hello,

I am new to python development and I want to know what kinds of tools
people use for python development. I went to Python website and found
several tools. [snip list of a dozen tools]
What else do I need?

You don't *need* any of these. You only *need* two things to write Python
code: something to edit text files, and the Python interpreter to check
that the code runs correctly. Everything else is optional.

Rather than try to predict ahead of time every possible thing you need,
you should start small, and as you discover a new requirement, then
investigate. Why spend hours, days or weeks investigating refactoring
tools only to find that after 15 years of programming you've never once
used it?

Also, which software is used in daily base? I know
version control software and bug tracking software are used almost
everyday by developers. Which software is used less often?

With respect, that's a silly question. It depends on what you do, and how
often you do it. If you distribute a new version of your software every
day, then you will use a distribution tool every day. If you do it once a
year, then you use distribution tool once a year.

Also, I will use GUI interface for Python. What kind of widget toolkits
do you recommend? I know there are GTK+ and Qt.

tkinter comes supplied with Python. So long as you have tcl/tk installed,
which nearly all Linux distros do, it should just work out of the box.
 
C

CM

I've often wanted something that would help globally change
things like function and method names including across multiple
files. Even variable names in large functions (ideally functions
should be small enough that this is not a problem but sometime
shit happens). I am not great at picking good names to begin
with and often code drift makes them even worse with time.
Editor search and replace doesn't cut it.

I have occasionally used Bicycle Repair Man for this kind of thing. I don't actually know if it works across files, and I never quite convinced myself that it really works faithfully at all, but you could always try it (and even improve it if you can):

http://bicyclerepair.sourceforge.net/#overallidea
 
T

Tim Chase

$ find . -name '*.py' | xargs grep my_function_name

seems to work for me. I suppose a language-aware grep would be
even better, because then it wouldn't find my_function_name when
it's embedded in docstrings, comments, and the like.

On the other hand, you probably want to find those too.

Most good editors (and IDEs?) should handle this as well. I can
speak for Vim where I could do something like[1]

sh$ vim *.py
:set hidden
:argdo %s/\<my_function_name\>/new_func_name/gc

then evaluate the results, optionally issuing ":wall" to write all the
changes.

Alternatively, if you just want to find all the pattern-matches and
view them, you can use

:vimgrep /\<my_function_name\>/ **/*.py

and then navigate them either using the quick-fix window:

:copen

or go forward/backwards in the quick-fix list with[2]

:cnext
:cprevious

I'd wager money that Emacs allows you to do something similar, but
I'd have to let an Emacs-user step in to answer that. YMMV with
other editors. Is this a "refactoring" tool, or just a valuable
tool, regardless of how it's used for refactoring :)

-tkc


[1]
The ":set hidden" tells Vim that it's okay to leave a buffer without
writing it, but still remember the changes made. Many folks have
this in their vimrc configuration. If you know you want to do it
everywhere, you can avoid the "c" flag to ask for confirmation.

[2]
These can be abbreviated as just ":cn" and ":cp"






..
 
R

Roy Smith

Tim Chase said:
I'd wager money that Emacs allows you to do something similar,

I'm sure it can. But, the next step in the evolution is:

$ emacs `find . -name '*.py' | xargs grep -l my_function_name`
 
M

Michael Torrie

What else do I need? Also, which software is used in daily base? I
know version control software and bug tracking software are used
almost everyday by developers. Which software is used less often?

Phew that's quite a list you have there. Are you coming from Windows
development?

I personally do all my development with vim, git, and a web browser for
reference (or Python in a nutshell book).

Dunno why things necessarily have to be complicated.
Also, I will use GUI interface for Python. What kind of widget
toolkits do you recommend? I know there are GTK+ and Qt.

Yes I recommend a nice GUI toolkit. Pick one and try it out.
 
R

rusi

You don't *need* any of these. You only *need* two things to write Python
code: something to edit text files, and the Python interpreter to check
that the code runs correctly. Everything else is optional.

Rather than try to predict ahead of time every possible thing you need,
you should start small, and as you discover a new requirement, then
investigate. Why spend hours, days or weeks investigating refactoring
tools only to find that after 15 years of programming you've never once
used it?

Factually --- I dont believe this is correct -- professional programmers need all this and more on occasion -- eg your list does not have profilers, etc.

Pedagogically --- Steven's advice is right on the money. If you are a nooband spend your time on breadth-first nurturing of the kind of list you've made, you will become a good programmer very slowly -- if at all. If you just follow Steven's advice -- stick to interpreter+editor -- you will becomea good programmer much faster. [Or add to taste: Michael's browser + git]

Philosophically -- there are roughly two schools:
1. Scale languages up to deal with difficult problems
2. Trivialize problems into elegant language solutions

The first is like holing oneself into a fortress with heavy artillery. The second is like packing up a backpack with a water-bottle and going for a trek.
The second is more fun, though the first is sometimes needed, though less than people imagine

The first produces languages/systems/philosophies like C++, Java, .NET.
The extremal examples of the second are Apl and Lisp.
In Apl the goal is to write your programs in one line. If that is achieved why bother to make it readable?
The Lisp benchmark is that the implementation of Lisp in Lisp is one page
http://www.paulgraham.com/mcilroy.html

Python is not exactly in either extreme camp though its much closer to the backpack than the fortress model -- Pythonistas delight more in making programs short and sweet rather than grand and glorious.

A similar philosophical division to the above:
http://osteele.com/posts/2004/11/ides
 
C

CM

Hello,



I am new to python development and I want to know what kinds of tools people use for python development. I went to Python website and found [12 different types of] tools.
What else do I need? Also, which software is used in daily base?
Which software is used less often?

It depends on what you want to do, but I myself would want at least an IDE. Of your list, I've only used 1,4,6 for a long time to make desktop applications.

What do you want to do?
Also, I will use GUI interface for Python. What kind of widget toolkits do
you recommend? I know there are GTK+ and Qt.

You can search the archives of this list for a lot of that question asked now and then. For me, wxPython.
 
C

cutems93

Hello,



I am new to python development and I want to know what kinds of tools people use for python development. I went to Python website and found several tools.



1. Automated Refactoring Tools

2. Bug Tracking

3. Configuration And BuildTools

4. Distribution Utilities

5. Documentation Tools

6. Integrated Development Environments

7. Python Debuggers

8. Python Editors

9. Python Shells

10. Test Software

11. Useful Modules

12. Version Control



What else do I need? Also, which software is used in daily base? I know version control software and bug tracking software are used almost everyday by developers. Which software is used less often?



Also, I will use GUI interface for Python. What kind of widget toolkits do you recommend? I know there are GTK+ and Qt.



Thank you in advance!

-Min S.-

Alright. Thanks everyone for your responses. I just want to know what toolsare GENERALLY used by professional developers. I am helping somebody who wants to know about software that he might use in his project. He does not know what kind of project it will be, but it will be more like scripting in the beginning. I know my question is somewhat vague, but this is all I can give you. Could you help me by sharing your experiences?

Thanks!
-Min-
 
R

rusi

Alright. Thanks everyone for your responses. I just want to know what tools
are GENERALLY used by professional developers. I am helping somebody who
wants to know about software that he might use in his project. He does not
know what kind of project it will be, but it will be more like scripting in
the beginning. I know my question is somewhat vague, but this is all I can
give you. Could you help me by sharing your experiences?

There was a thread on editors a few months ago where I made some suggestions:
http://mail.python.org/pipermail/python-list/2013-January/639351.html and following

I dont know what you mean my 'scripting'
Anyhow I'll add this: the python docs are exceptionally well-written and a pleasure to go through.

Start with http://docs.python.org/2/library/
Heres a suggested order to navigate

5 Subsects 1 to 9 are important
10 File and Directory subsects 1 2 7 3
27.1 sys
13 1 and 2 (csv and config)
Some 3rd party config parsers better than builtin
15 1 os
One of 15. 4 5 or 6 (command line parsing)
Yes this is a bit of a mess

22 Internationalization (unicode) is increasingly important but I cannot make head-or-tail of it. Python 2 and 3 completely inconsistent in this area

On general note about python's object orientation:
If by 'scripting' you mean working within some large App's environment eg libreoffice or blender which are scripted with python, then you need to carefully understand that app's object model.

If by scripting you mean something like shell-scripting and a few steps beyond, just forget about OO
 
R

rusi

Any time someone has shown me a “Python scriptâ€, I don't see how it's
different from what I'd call a “Python programâ€. So I just mentally
replace “scripting with “programmingâ€.

If you are saying that python spans the scripting to programming spectrum exceptionally well, I agree. I dont however think that the two philosophiesare the same. See http://www.tcl.tk/doc/scripting.html
 
W

Wolfgang Keller

Also, I will use GUI interface for Python. What kind of widget
toolkits do you recommend? I know there are GTK+ and Qt.

wxPython, PyGUI...

Sincerely,

Wolfgang
 
C

Cameron Simpson

| > I am new to python development and I want to know what kinds of tools
| > people use for python development.
|
| 1) emacs
| 2) Cpython
| 3) subversion
| 4) http://www.python.org/doc/
| 5) comp.lang.python

1) vi/vim
2) Cpython
3) mercurial
4) local copy of http://www.python.org/doc/ for python 2 and 3
(lets me work offline and snappier to browse)
5) (e-mail address removed)

| 99.9% of the programs I write are command-line tools.

99.9% of the programs I write are command-line tools.

Cheers,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,740
Latest member
AdolphBig6

Latest Threads

Top