Skip to content

AttributeError: 'PosixPath' object has no attribute 'startswith' #2942

@popjxc

Description

@popjxc

I cast 'location' to str, and patch to astroid/interpreter/_import/util.py, then it works.

The error stack is:

Traceback (most recent call last):
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/pylint/utils/ast_walker.py", line 87, in walk
callback(astroid)
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/pylint/checkers/imports.py", line 587, in visit_importfrom
self._add_imported_module(node, f"{imported_module.name}.{name}")
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/pylint/checkers/imports.py", line 1062, in _add_imported_module
importedmodname = astroid.modutils.get_module_part(importedmodname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/modutils.py", line 435, in get_module_part
file_from_modpath(
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/modutils.py", line 330, in file_from_modpath
return file_info_from_modpath(modpath, path, context_file).location
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/modutils.py", line 381, in file_info_from_modpath
return _spec_from_modpath(modpath, path, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/modutils.py", line 643, in _spec_from_modpath
found_spec = spec.find_spec(modpath, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/spec.py", line 458, in find_spec
return _find_spec(tuple(modpath), tuple(path) if path else None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/spec.py", line 480, in _find_spec
finder, spec = _find_spec_with_path(
^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/spec.py", line 396, in _find_spec_with_path
mod_spec = finder.find_module(modname, module_parts, processed, submodule_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/spec.py", line 249, in find_module
if util.is_namespace(modname) and modname in sys.modules:
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/util.py", line 97, in is_namespace
if any(
^^^^
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/util.py", line 98, in
any(location.startswith(lib_dir) for lib_dir in STD_AND_EXT_LIB_DIRS)
File "/home/admin/miniforge3/envs/modelserver/lib/python3.11/site-packages/astroid/interpreter/_import/util.py", line 98, in
any(location.startswith(lib_dir) for lib_dir in STD_AND_EXT_LIB_DIRS)
^^^^^^^^^^^^^^^^^^^
AttributeError: 'PosixPath' object has no attribute 'startswith'

my env:
$pylint --version
pylint 4.0.4
astroid 4.0.3
Python 3.11.13 | packaged by conda-forge | (main, Jun 4 2025, 14:48:23) [GCC 13.3.0]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions