Description
Steps to reproduce
You can either clone this repo to get the test file tree:
git clone https://github.com/feluxe/test_pylint_ns_package_err.git
cd
into it and run pipenv install --dev --pre
or create the file tree manually with the following steps:
Create test file tree manually:
Create this file tree:
tmp_pylint_err
├── nspackage
│ ├── mypackage
│ │ └── __init__.py
│ └── sty
│ └── __init__.py
└── test.py
Next, install pylint
and sty
from pypi in a Python 3.7 virtualenv:
pipenv install --dev --pre pylint sty
We add this line to nspackage/mypackage/__init__.py
:
from nspackage.sty import fg
We add this line to nspackage/sty/__init__.py
:
from sty import *
We add these lines to test.py
:
from nspackage.sty import fg
from nspackage.mypackage import fg as fg2
print(f"{fg.green}hello1{fg.rs}")
print(f"{fg2.green}hello2{fg2.rs}")
Current behavior
Note: As you can see in the project file tree, nspackage
is a name space package omitting __init__.py
.
If I run pipenv run pylint nspackage
, I get these errors:
************* Module sty
nspackage/sty/__init__.py:1:0: W0406: Module import itself (import-self)
************* Module mypackage
nspackage/mypackage/__init__.py:1:0: E0611: No name 'fg' in module 'nspackage.sty' (no-name-in-module)
Expected behavior
I think the example project is valid Python and pylint should not complain.
You can run test.py
for validation:
pipenv run python test.py
which runs just fine.
pylint --version output
pylint 2.2.2
astroid 2.1.0
Python 3.7.1 (default, Nov 11 2018, 02:35:35)
[GCC 8.2.1 20180831]