Overall PyCharm seems somewhat snappier/lighter than Eclipse, though it's still a relatively heavyweight Java application.
*args, **kwargs). I'm not sure how that would work if the method was overloaded.
Going by feature lists and videos; I haven't tried it yet (seems too expensive because it sounds like you're not allowed to use the "personal" version at work, and on top of that the personal version has less features).
NOTE: might want to try the "Settings Repository" plugin for sharing settings.
The Eclipse keymap is most familiar to me. But some of the keymap is weird; for example, I think I might prefer to switch Find and Replace back to Ctrl-F and Ctrl-H. And some of the keymap doesn't actually work, because keys are doubly-bound (e.g. Alt+Shift+X for Run).
From default keymap, some that I like:
Other changes to try:
shortcutFoo is a web application for practicing shortcuts in many applications, including PyCharm.
The "Key promoter" plugin will pop up to show the keyboard shortcut when you use the mouse for something (though it can get kind of annoying); it's configurable under Other Settings.
def main(): $END$ if __name__ == '__main__': main()
Under Tools→Terminal, the following "Shell path" seems to work for starting a Cygwin bash terminal instead of the regular cmd terminal:
C:\cygwin\bin\bash -c "/bin/xhere /bin/bash.exe"
I figured this out by looking at the registry entry added by the
zsh can be used instead (chere runs bash directly, then runs zsh under xhere):
C:\cygwin\bin\bash -c "/bin/xhere /bin/zsh.exe"
but the PyCharm terminal is doing something weird with the default grml prompt. Some things I tried so far, to no avail:
With the babun shell, this runs, but doesn't start in the right directory:
"C:\Users\Sam\.babun\cygwin\bin\bash.exe" -c "/bin/xhere /bin/bash.exe"
Sometimes PyCharm can figure out what type a variable is, but at other times you can give it some help.
It parses certain docstrings; if I remember correctly, it uses the parameter and return type annotations.
If you call
isinstance, e.g. with an if block or assert statement (example: http://devnet.jetbrains.net/thread/436846?tstart=0):
question = form.save(commit=False) assert isinstance(question, models.CategoryQuestion)
WORKON_HOME environment variable to set the base directory for creating virtualenvs through PyCharm. This works on Windows too.
Help menu → Show Log in File Manager
Usually in the
system/log subdirectory of the PyCharm directory (e.g.
Bugs I reported/followed on the issue tracker:
Summary: problem/bug with skeleton generation. Look for errors in event log, try to resolve, manually clear python stubs directory, try again.
Some virtualenvs work fine, some don't. Right now creating a new one is not working. I use this command:
mkvirtualenv --system-site-packages venvtest1
In PyCharm I have the following statement:
from PyQt4 import QtGui
When I add the interpreter in PyCharm, it underlines "QtGui" with the error "Unresolved reference 'QtGui'". Control-clicking on "PyQt4" takes me to the
__init__.py in the system Python "site-packages" as expected, but not "QtGui" (as if the skeletons were not generated from the shared library). Creating a virtualenv from the PyCharm GUI gives the same unresolved references.
Some previously-created virtualenvs work fine; I can't see any obvious differences between them. Control-clicking on "QtGui" takes me to the generated skeleton under the ".PyCharm30" directory.
An error is given in the "Event Log" about failing to generate skeletons for one module, a CFFI module (generated shared library) not related to Qt. I can't seem to make it generate this error a second time except by creating a completely new virtualenv (deleting and recreating with the same name does not work, nor does "File → Invalidate Caches").
To see if it was a problem with the CFFI module, I removed the link from
easy-install.pth and deleted the
egg-link file. To get everything to rebuild, I had to clear out the
~/.PyCharm30/system/python_stubs directory. Then everything started working.
TODO: file a bug report if I can figure out a good way to explain how to reproduce. Or try to fix it in the source and submit a pull request (possibly with a corresponding bug report).