Pylint instance doesn't respect PYTHONPATH and/or source roots
See original GitHub issueStep 1: Are you in the right place?
This is highly related to https://github.com/leinardi/pylint-pycharm/issues/10, but it has been closed.
- I have verified there are no duplicate active or recent bugs, questions, or requests
- I have verified that I am using the latest version of the plugin.
Step 2: Describe your environment
- Plugin version:
v0.11.0
- PyCharm/IDEA version:
2018.3.5 (Community Edition)
- Pylint version:
2.3.1
Step 3: Describe the problem:
Pylint run by the plugin doesn’t put source roots
into PYTHONPATH. Therefore, all import
statements involving project files trigger no-name-in-module
error.
Steps to reproduce:
- Create a new project under directory
${some_directory}/xxx
, using virtualenv under${some_directory}/xxx/rt
; activate the virtualenv bycd ${some_directory}/xxx; . rt/bin/activate
. - Install pylint:
pip install pylint
- Create directory
${some_directory}/xxx/src
, and mark it assource root
in pycharm. Create two files,${some_directory}/xxx/src/utils.py
, filled withdef f(x): return x + 1
, and${some_directory}/xxx/src/hello.py
, filled withimport utils; def hello(n): print('hello:', utils.f(n))
. (The code is written in one line for clarity. See the actual layout in screenshot below) - Run pylint plugin on
${some_directory}/xxx/src/hello.py
.
Observed Results:
- In terminal, under working directory
${some_directory}/xxx
, with the virtualenvrt
activated, runPYTHONPATH="$(pwd)/src" pylint src/hello.py
. It doesn’t reportmodule 'utils' has no 'f' member
. However, the Pylint plugin does report. - Interestingly, the Pylint plugin stops reporting the error some time later. I haven’t thought of a way to measure the time lapse.
Expected Results:
- The plugin should not report
module xxx has no yyy member
in such case, and should behave the same as the terminalpylint
.
Relevant Code:
src/hello.py
import utils
def greeting(n):
print('hello:', utils.f(n))
src/utils.py
def f(x):
return x + 1
Event Log: Yes there’s exclamation mark around Event Log
in the screenshot. However I removed the test project before I saw the comment about pasting the event log. I tend to believe the problem has been partially fixed. IMHO the scanning of source roots might not be done every time before running pylint. I also tested removing the mark source root
on src
. While pycharm inspection immediately underlines import utils
in hello.py
, there’s no response from the pylint plugin (after it has stopped reporting the error).
Issue Analytics
- State:
- Created 4 years ago
- Reactions:7
- Comments:6
Top GitHub Comments
I was able to resolve this by adding
PYTHONPATH=./src
to my.env
file.Source
Context: I am also using
pipenv
to allow Automatic Loading of.env
.I also have the same problem.