While using pipenv to install a package, it fails with PermissionError because it looks like requirementslib tries to scan a directory that the current user has no read permissions for. I was unable to find a way to make requirementslib ignore that directory, thus I'm reporting this issue here: Moving swiftly past the life decisions that led to me having a root-owned directory in a Python project path, wouldn't the correct behaviour be to ignore such directories?
Adding pre-commit to Pipfile's [dev-packages]...
✔ Installation Succeeded
Pipfile.lock (0f2c10) out of date, updating to (17e118)...
Locking [dev-packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success!
Locking [packages] dependencies...
Building requirements...
Traceback (most recent call last):
File "/home/abstract/.local/bin/pipenv", line 8, in <module>
sys.exit(cli())
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/cli/command.py", line 233, in install
retcode = do_install(
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/core.py", line 2193, in do_install
do_init(
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/core.py", line 1274, in do_init
do_lock(
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/core.py", line 1102, in do_lock
venv_resolve_deps(
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/utils.py", line 1332, in venv_resolve_deps
deps = convert_deps_to_pip(
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/utils.py", line 1451, in convert_deps_to_pip
new_dep = Requirement.from_pipfile(dep_name, dep)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 2747, in from_pipfile
r = FileRequirement.from_pipfile(name, pipfile)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1841, in from_pipfile
arg_dict["parsed_line"] = Line(line)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 171, in __init__
self.parse()
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1304, in parse
self.parse_name()
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1030, in parse_name
name = self._parse_name_from_path()
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 993, in _parse_name_from_path
metadata = get_metadata(self.path)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 567, in get_metadata
dist = get_distinfo_dist(path, pkg_name=pkg_name)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 535, in get_distinfo_dist
dist_dir = next(iter(find_distinfo(path, pkg_name=pkg_name)), None)
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 527, in find_distinfo
for dist_dir in dist_dirs:
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 517, in <genexpr>
dist_dirs = (
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 490, in iter_metadata
with contextlib.closing(ScandirCloser(p)) as path_iterator:
File "/home/abstract/.local/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 450, in __init__
self.iterator = scandir(path)
PermissionError: [Errno 13] Permission denied: '/home/abstract/foo/pgdata'
While using pipenv to install a package, it fails with PermissionError because it looks like requirementslib tries to scan a directory that the current user has no read permissions for. I was unable to find a way to make requirementslib ignore that directory, thus I'm reporting this issue here: Moving swiftly past the life decisions that led to me having a root-owned directory in a Python project path, wouldn't the correct behaviour be to ignore such directories?
Here's the traceback: