-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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]
Oberon00, Jamim and owaisowais
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
PCManticore commentedon Dec 17, 2018
Thanks for reporting an issue!
Oberon00 commentedon Oct 8, 2019
At opentelemetry/opentelemetry-python, we have the same issue and it's very annoying as we would like to add companion modules for widely-used libraries that are named the same as the corresponding library, but in a different package.
EDIT: astroid==2.3.1,pylint==2.4.2
Python 3.7.3
Oberon00 commentedon Oct 9, 2019
It's very likely that #2862 is the same problem but that issue has a nicer repro.
Oberon00 commentedon Oct 9, 2019
Also, the
topic-import-system
label seems to be missing on this issue.erensahin commentedon Apr 4, 2022
I run into the same problem when I use namespace packages. My pylint version is 2.4.4, I tried with more recent versions but it does not solve at all. Any suggestions?
Pierre-Sassoulas commentedon Apr 4, 2022
Did you try to install from scratch (do you have the latest astroid version too) ? This issue seems related to #5235 it might be a solution. If you have an example of repository with namespace feel free to comment on it :)
erensahin commentedon Apr 4, 2022
Thanks! I uninstalled pylint and astroid, and re-installed pylint with its latest version (2.13.4).
I will try to explain the package structure. The problem is, namespace package name conflicts with another python library name (it is an internal one, so I will pick pandas as an example);
The content of namespace_pkg/pandas/init.py is as follows;
cat
namespace_pkg/pandas/__init__.py
When I run the file directly as
python namespace_pkg/pandas/__init__.py
, I don't encounter any problem at all;But when I run pylint:
pylint namespace_pkg/
, I get the error as;erensahin commentedon Apr 4, 2022
Plus, #5235 looks quite promising for my problem :)
24 remaining items