Last Site Update: September 20th, 2017 | Latest Version: 6.0.0
PyDev developmentPyDev is open source and depends on your contributions! This may be in the form of bug fixes, answers on stackoverflow, new features...
Another option is financially supporting it at: Patreon (which provides a way to support it monthly and get rewards starting with $1).
Or through 1-time contributions at:
Search PyDev-related content
The place to search and report BUGS is at https://www.brainwy.com/
When reporting a bug, the following information must be given:
- System (e.g windows XP)
IMPORTANT: If you're having a bug where there's a halting condition, it's important to give the information on the available threads when that happens and whether there's actually a deadlock.
To get that info, start eclipse with the java executable (not javaw) and add the -Dcom.sun.management.jmxremote flag to vmargs (note that the sun java 1.6 should be used).
E.g.: d:\bin\eclipse_350\eclipse.exe -vm D:\bin\jdk_1_6_11\bin\java.exe -vmargs -Dcom.sun.management.jmxremote
Now, open up jconsole (e.g.: d:\bin\jdk_1_6_11\bin\jconsole.exe) and press 'detect deadlock' -- if a deadlock is found, paste the info on the deadlocked threads and that should be enough.
If no deadlock is found, the bug should have the info on all the threads running attached to it (below are instructions on how to get that info -- as it's too troublesome to pass every thread in jconsole copying it).
If you're on windows, press Ctrl+Break to get a list of all the running threads (which should be attached to the bug). Note that you may have to increase the buffer of the console to get all info (so, in the console open the properties menu -- Alt+Space -- select the 'properties' and in 'screen buffer size: height' raise it to something as 9999 -- and only then press Ctrl+Break)
On Linux (and other unix variants) that info is gotten with kill pid --QUIT
NOTE: See the About for the proper places for general questions, development questions, etc..
First try using a search engine and if you can't really find about it, see the About for the proper contact information.
Check the getting started manual at: PyDev Getting Started
Also, there are some videos available at: http://www.youtube.com/user/pydev which may help you in getting started.
Yes (note that some previous versions had a bug in which it didn't work if the Eclipse installation had spaces in the path).
If the project was already in Eclipse (i.e.: has the .project and .pydevproject files), use File > Import > Existing Projects into Workspace.
Now, if the project never had the .project nor .pydevproject files, there are 2 choices:
Just go through the File > New > PyDev Project wizard and select as the directory the directory with your sources (properly configuring the source folders in the process -- see: Creating a Project for more information).
Note on source folders: If the file structure you have is:
and you want to make the import:
you have to set as the source folder the folder above myproject (as that same folder, above myproject, will be added to the PYTHONPATH -- i.e.: source folders are the folders added to the PYTHONPATH).
Note on links: links can be used above the source folder or as the source folder, but never inside a source folder, as it's not supported by PyDev.
Create the .project and .pydevproject files from the template below and use File > Import > Existing Projects into Workspace to import it. Note that this option is more a reference for people that want to automate creating multiple projects at once.
.project contents (must replace the MyProject with the project name)
<?xml version="1.0" encoding="UTF-8"?>
.pydevproject contents (must replace the path (/MyProject/src) with the actual folders to be in the PYTHONPATH)
<?xml version="1.0" encoding="UTF-8"?>
Follow the same steps in the FAQ above to import a PyDev project, then right click the project > PyDev > Set as Django project and add 2 String substitution variables (on right click project > properties > PyDev PYTHONPATH)
DJANGO_MANAGE_LOCATION, which is the relative path to manage.py. i.e.: src/my_project/manage.py
Note that if the .pydevproject file was created, those values could already be added to it in the entry org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION:
Please refer to the Getting Started Guide at PyDev Getting Started for up-to-date information on how to correctly install and configure your PYTHONPATH.
Ok, the first step in diagnosing this is actually taking PyDev out of the equation and making sure it runs on the command line.
-- if it also doesn't initially work in the command line, check if your environment variables -- such as PYTHONPATH, PATH, LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, etc. are set correctly.
Now that you know it works properly in the command line, it's time to make it work on PyDev too.
As you already have it working in the command line, try to close Eclipse and run it from that same shell you have opened, where you know it's working (so that it'll inherit all the environment variables you have setup from there).
If it still didn't work, the usual culprit is the PYTHONPATH environment variable (because this specific variable is managed in PyDev based on the interpreter configuration and source folders for a given project and dependent projects), so, try to create a script with the following contents:
And run this script from the command line and from within PyDev to check if it's the same in both cases, if it's not, configure the project or interpreter until it matches.
If at this point you got it to work, you may want to go to the interpreter configuration > environment tab and select the environment variables that are important so that they're always the same when launching for your setup (so that you don't always need to run Ecipse from that command line shell).
Now, if after this point, you still haven't been able to make it work, it may be time to ask on stackoverflow.com (with a PyDev tag), showing the stacktrace you have and a screenshot with your interpreter configuration and a screenshot of the PyDev Package Explorer (with the source folders showing and expanded 1 level).
p.s.: You may also want to check that you're not shadowing a name from the standard library or some library you use (for instance, the standard library has an email module, so, you shouldn't have a top-level email module in your own project -- likewise for other top-level modules or packages in the standard library or libraries you use, such as django, requests, etc).
PyDev does most of its things in the Java side, but some information can only be gotten from the python side (mainly builtins), so, in order to get that info, PyDev creates a shell and communicates with it through sockets.
So, if the code-completion for a library isn't working, it's possible to ask it to be analyzed through that shell too (See the Forced builtins for details on configuring a library to be analyzed through the shell).
Now, it's possible that there's some issue in creating/communicating to such a shell. The main problems when that happens are:
1. There's a firewall blocking the communication to the shell.
2. In Linux, some kernels do not allow ipv4 utilization, which may make PyDev fail.
To enable it, do: echo 0 > /proc/sys/net/ipv6/bindv6only
3. The timeout to connect is too smal.
It depends upon the "Timeout to connect to shell" in the code-completion preferences (Window > Preferences > PyDev > Editor > Code completion)
If nothing works, please report a bug (also, check if there is anything on the error log (Window > Show view > > Error log) and on the eclipse '.log', which is located at the .metadata folder of the workspace location.
The eclipse console is not an exact copy of a shell... one of the changes is that when you press <ENTER> in a shell, it may give you a \r, \n or \r\n as an end-line char, depending on your platform. Python does not expect this -- from the docs it says that it will remove the last \n (checked in version 2.4), but, in some platforms that will leave a \r there. This means that the raw_input() should usually be used as raw_input().replace('\r', ''), and input() should be changed for: eval(raw_input().replace('\r', '')).
Check the tasks page for info on tasks.
That's a known bug in Eclipse. You can see more details on and vote for it if you want it fixed at: https://bugs.eclipse.org/bugs/show_bug.cgi?id=179628
And details at the old PyDev bugtracker: https://sourceforge.net/tracker/index.php?func=detail&aid=1595998&group_id=85796&atid=577329
Basically, Ctrl+[0-9] does not work if a Ctrl+Shift+[0-9] is also set.
The proposed workaround until this is fixed is using Ctrl+/ and Ctrl+\ for comment/uncomment -- which are set by default, and changing Ctrl+Shift+4 to Ctrl+6 -- or removing it altogether if you don't use it.
Aparently, this bug is related only to GNOME (and no fix is provided for it).
The good news is there is a work around. In gnome font prefs, set your DPI to less that 76. it works on the fly.
This bug is closed in the PyDev bugtracker, but the bug was added on other places such as gnome and eclipse. The PyDev bug that points to those (and where this thread took place is HERE)
Well, problems have been reported on Mac and Linux, and the main reason seems to be symlinks. PyDev will only find extensions that are 'really' below the python install directory. This happens because the 'less common denominator', which in this case is windows, does not have symlinks. A workaround to this problem includes manually adding the given folder installation to the pythonpath or changing the installation of the package to be under the site-packages folder.
Well, some libraries once installed do not really show in code completion because they do not have a corresponding module (such as _builtin_ and datetime) or they do have a corresponding module but it cannot be really used in code completion because most of its information is only gotten at runtime (such as sys and os), so, in order for code completion to get its information, you have to manually add it to those libs (and by doing so, its information is gotten with a python shell).
PyDev has an interactive console you can use. See: PyDev Interactive Console
Well, if you have PyLint active, you can disable it, as it is the process that takes most time when building.
Probably you are in the JAVA package explorer or something similar. You have to use the default navigator so that it shows its properties.
Usually this means that you have some misconfiguration in the PyDev Package Explorer working set selection or filters.
Note: you can access the PyDev Package Explorer menu, with ctrl+F10 or by clicking in in the triangle that's upside down in the PyDev Package Explorer.
The usual checks are:
1. In the PyDev Package Explorer menu, the top level elements is pointing to working sets?
2. In the PyDev Package Explorer menu, customize view, the content has both, PyDev Navigator Content and Resources checked?
3. In the PyDev Package Explorer menu, customize view, is it possible that the filters selected are hiding all your elements?
If all of these are correct, please ask in the users forum, as it could be a bug (please check your error log and if there's something there, add it to your post -- see: How do I Report a Bug? (in the top of this FAQ) for details on getting the error log).
UPDATE: As of version 0.9.8.6, a new 'PyDev Project' was introduced, so, you can already use the 'new PyDev project' (but the way described below will still work).
Well, you basically have to do a simple project and use create simple file / folder to create python modules.
You may also have to associate the *.py with the PyDev editor (even though that is probably automatic).
p.s. Don't forget to put it into both of your PYTHONPATHs (enviroment and in the project properties).
To do that, the easiest way is going to the Run menu (Run > Run As > Python or Jython). If it is not available in your current eclipse perspective, you can enable it by going to window > customize perspective > commands and checking the "Lauch" item (in this way, you can go only with the keyboard).
Another way to run a module is right clicking the module in the navigator and choosing python > run (when a .py file is selected).
If you are in doubt what is actually being passed to the run, you can go to the run menu (Run > Run...) and on the given run (python or jython), click on 'See resulting command-line for the given parameters' and check the command-line, as well as the PYTHONPATH that will be used for the run.
Well, code completion works by default by analyzing the source code, but, sometimes, most information is only really available at runtime (the os module and wxPython are good examples here). So, you can specify that you want to treat those as builtin libraries. For that, go to the python interpreters and add it as a 'forced builtin lib'. More information may be found at the faq:
'What is that 'Forced builtin libs' in the Python Interpreters preferences?'
The problem is that PyDev passes a dict as the _builtins_ module to execfile while debugging (so, regular attribute access is not available on that object).
It's basically the same thing, but works when debugging.
1. make sure that PyLint is correctly installed in your site-packages (try running it at least once on a command-line to make sure your installation is correct).
2. Check if your project and your pythonpath are correctly configured -- pylint is only passed in files in the pythonpath for a project, so if any of those are not well configured, pylint won't work correctly.
3. If your installation is all ok, try reading the PyLint provided page to see if it is corretly configured in the eclipse side.
4. If everything fails, you can ask in the forum or submit a bug report for it (don't forget to add the following information: pylint installation path, pylint version and the other information requested on the 'How do I Report a BUG?' faq.
Thanks for Petru Lauric for the following explanation:
The ORB I use (omniORB) creates its own worker threads inside the python world, whenever a python function is called via CORBA. These threads are not created by using the 'threading' module so the PyDev debugger's trace function is not automatically set for the ORB worker threads.
The solution is to explicitly set the trace function for the ORB threads.
1) Open folder [eclipse sdk path]\plugins\org.python.pydev.debug_0.9.8.4\pysrc(or similar)
2) Remove file pydevd.pyc, make a backup copy of file pydevd.py and make this change to the PyDB::run() method from file pydevd.py:
3) Make changes similar to those below to your python app.
Note 1: the "pydev_hook" global variable will *only* exist in the global namespace of the "main" module of your app (the script launched by PyDev when you debug your app). Feel free to pass it as an argument to functions from other modules, if that's where you need to use it.
Note 2: the trace function for the ORB worker threads MUST be set before the ORB creates the first worker thread.
a) import this undocumented ORB function
def dbg_trace(flag=0, wt=None):
c) finally, make these changes
# NOTE: the ORB will call dbg_trace each time it
I hope this helps.
OK, I know that many features are available, but I just don't know how can I access them through my keyboard!!
Please refer to: PyDev Keybindings for up-to-date info on the most useful keybindings provided by PyDev and Eclipse.
To uninstall you should either go on and remove the org.python.pydev* from eclipse/plugins and eclipse/features or you can go to help > software updates > manage configuration, choose the PyDev plugin and disable it (after that, to completely remove it, you must restart Eclipse and only then select it for uninstall). Note that this process is the same for any Eclipse plugin.
Copyright: Brainwy Software Ltda, 2014-2017