Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyCharm cannot find the packages in virtualenv

I have the latest PyCharm CE and am using it with virtualenv. I have defined the interpreter as the interpreter in the virtualenv. The Project Interpreter window in PyCharm lists all the packages I have installed. I confirmed this by running pip freeze > requirements.txt and running through the packages manually.

My problem is that PyCharm won't find certain includes in its editor windows, like Flask-Login:

In from flask.ext.login import current_user, login_user, logout_user, login_required the includes current_user, login_user, logout_user, login_required are all marked as unresolved references.

Am I missing something?

like image 696
ruipacheco Avatar asked Dec 29 '15 22:12

ruipacheco


People also ask

How do I see installed packages in virtualenv?

Calling pip command inside a virtualenv should list the packages visible/available in the isolated environment.


2 Answers

The problem may lay in PyCharm picking up faulty 'Interpreter Paths' for your virtual environment. Go here:

PyCharm (menu) -> Preferences (Menu option)                -> Project: <name> (Dropdown)                 -> Project Interpreter (Menu option)                -> 'Settings' button (Looks like a gear)                -> More (Menu option)                -> Select your virtualenv interpreter                -> Click 'Show paths for interpreter' button (on bottom of list window) 

Now that you're in this (admittedly tortuously found) location, you should see paths being used by this interpreter. If my theory is correct, these are pointing to global system locations. To add the virtual environment paths, you should click the + button and add corresponding paths that exist inside your virtual environment. Once you're done with this, it's a good idea to select the global system paths and click - to remove them. Click apply, and go to File -> Invalidate caches / Restart to reload PyCharm.

This should get your interpreter to be pointed to the correct location for the libraries you've installed into your virtualenv, and you should no longer be getting the import error. Note that even with this fix you will not see your libraries under the Project Interpreter, but they should be being loaded.

like image 174
Nathaniel Ford Avatar answered Sep 23 '22 20:09

Nathaniel Ford


In the newest version of PyCharm (2016.1.4 in my case):

  • Settings
  • Project: name of project
    • project Interpreter
    • at the right side there will be a dropdown where you can choose the interpreter. There should be venv options.

See image below for better explanation (like they said, 1 picture worth thousands word)

Setting python interpreter

like image 34
dieend Avatar answered Sep 19 '22 20:09

dieend