IntelliJ Python plugin & Run classpath

2019-01-22 19:23发布

问题:

I have a project located at /home/myself/workspace/Project1, for which I created an SDK from a Python 2.7.3 Virtualenv I have setup.
This project uses some external code that I have in an accessible directory, e.g. /home/myself/LIBRARY; this directory contains several directories with code, docs etc....
For example, there is a module "important_util" located at /home/myself/LIBRARY/mymodule/important_util.py.

Now, I added the whole dir /home/myself/LIBRARY in the SDK Classpath, and in the Editor window it appears just fine. The imports and calls are recognized and I can also navigate through the code in LIBRARY directories.

The problem is that, when I try to run my program, it fails at the first import using LIBRARY!!!

Traceback (most recent call last):
   File "/home/myself/workspace/Project1/my_program.py", line 10, in <module>
      from mymodule import important_util as ut 
      ImportError: No module named mymodule

I also tried to add the same directories to the section "Global Libraries" in the Sources section...but no luck.

I can't seem to find a way to add this code to the Run classpath, how would I be able to do this?

回答1:

Make sure you have __init__.py in mymodule directory:

The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__ variable, described later. ©

UPDATE: In IntelliJ IDEA additional directories should be added as Module Dependencies or configured as Libraries (to be added to the Dependencies) instead of the Classpath tab of the Python SDK:

I've verified that this folder (D:\dev\lib) is added to the PYTHONPATH and import works.



回答2:

In IntelliJ 14 it's a little different, you are modules/eggs like so:

  • Go to File -> Project Structure
  • Now select Modules and then "Dependencies" tab
  • Click the "+" icon and select "Library"
  • Click "New Library" and select Java (I know it's weird...)
  • Now choose multiple modules / egg and "OK".
  • Select "Classes" from categories.
  • Give your new library a name, "My Python not Java Library"
  • And finally click "Add Selected"


回答3:

From Version of 2017.1 adding it has been changed again. There is no project structure in the file menu. Writing current procedure down:

  1. Go To Preference/Settings. File -> Settings (IDE Name -> Preferences for macOS)

  2. Select Build, Execution, Deployment

  1. Select Python Interpreter

  2. Select on drop-down menu of project interpreter and select the path of path of version of Python required for the project.

  1. Click on Apply and wait for few minutes to let IntelliJ index the python packages.

All error should be gone now and You should be able to see Python used in the project in the list of external libraries.

Happy Coding.