Skip to content

pipenv uninstall <package> --dev throws 'NonExistentKey' exception #6312

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
marwin-roth opened this issue Nov 14, 2024 · 4 comments · May be fixed by #6392
Open

pipenv uninstall <package> --dev throws 'NonExistentKey' exception #6312

marwin-roth opened this issue Nov 14, 2024 · 4 comments · May be fixed by #6392
Labels
Contributor Candidate The issue has been identified/triaged and contributions are welcomed/encouraged.

Comments

@marwin-roth
Copy link

Issue description

When I want to remove a dev-package from the Pipfile and Pipfile.lock, I ran the command pipenv uninstall <package> --dev. The docs state, that pipenv uninstall takes the same arguments as pipenv install.

Expected result

Uninstall the dev-package and remove it from the Pipfile and Pipfile.lock.

Actual result

Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 8, in <module>
    sys.exit(cli())
             ~~~^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/cli/options.py", line 52, in main
    return super().main(*args, **kwargs, windows_expand_args=False)
           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/decorators.py", line 92, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/cli/command.py", line 288, in uninstall
    retcode = do_uninstall(
        state.project,
    ...<10 lines>...
        ctx=ctx,
    )
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/routines/uninstall.py", line 130, in do_uninstall
    if project.remove_package_from_pipfile(
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        normalized_name, category=pipfile_category
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ):
    ^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/project.py", line 1119, in remove_package_from_pipfile
    del p[category][name]
        ~~~~~~~~~~~^^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/tomlkit/items.py", line 1502, in __delitem__
    self.remove(key)
    ~~~~~~~~~~~^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/tomlkit/items.py", line 1472, in remove
    self._value.remove(key)
    ~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv/vendor/tomlkit/container.py", line 352, in remove
    raise NonExistentKey(key)
pipenv.vendor.tomlkit.exceptions.NonExistentKey: 'Key "ruff" does not exist.'

Steps to replicate

Contents of Pipfile:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
requests = ">=2.27.0,<2.30.0"
pydantic = ">=1.9.0,<2.0"

[dev-packages]
vcrpy = "*"
build = "*"
twine = "*"
bump2version = "*"
pytest-cov = "*"
exceptiongroup = "*"
tomli = "*"
ruff = "*"

I tried it with the ruff package. Installed it with pipenv install ruff --dev. It was added to the Pipfile and Pipfile.lock. Then tried to remove it with pipenv uninstall ruff --dev, which threw the error above.


$ pipenv --support

Pipenv version: '2024.4.0'

Pipenv location: '/usr/local/Cellar/pipenv/2024.4.0/libexec/lib/python3.13/site-packages/pipenv'

Python location: '/usr/local/Cellar/pipenv/2024.4.0/libexec/bin/python'

OS Name: 'posix'

User pip version: '24.3.1'

user Python installations found:

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.13.0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '23.5.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT '
                     '2024; root:xnu-10063.121.3~5/RELEASE_X86_64',
 'python_full_version': '3.13.0',
 'python_version': '3.13',
 'sys_platform': 'darwin'}

System environment variables:

  • COMMAND_MODE
  • TERM_SESSION_ID
  • LC_CTYPE
  • SHELL
  • __CFBundleIdentifier
  • TMPDIR
  • HOME
  • SSH_AUTH_SOCK
  • PATH
  • XPC_SERVICE_NAME
  • TERM
  • LOGNAME
  • USER
  • XPC_FLAGS
  • __CF_USER_TEXT_ENCODING
  • TERMINAL_EMULATOR
  • SHLVL
  • PWD
  • OLDPWD
  • ZSH
  • PAGER
  • LESS
  • LSCOLORS
  • LS_COLORS
  • KUBE_CONFIG_PATH
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PIP_PYTHON_PATH
  • PIPENV_ACTIVE
  • PS1
  • _
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

  • PIPENV_ACTIVE: 1

Debug–specific environment variables:

  • PATH: /usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
  • SHELL: /bin/zsh
  • PWD: /Users/marwin.roth/IdeaProjects/sdk
@Pious1020
Copy link

ill work on this

@Pious1020
Copy link

can someone assign me

@zawi99
Copy link

zawi99 commented Jan 17, 2025

I experienced the same problem when uninstalling the django-debug-toolbar package from the dev-packages. After a quick look into the implementation, I found a workaround and was able to uninstall the package by adding the proper categories option:

pipenv uninstall django-debug-toolbar --categories dev-packages

@matteius
Copy link
Member

We should add back better support of the --dev flag for this command -- someone feel free to open a PR if I don't get to it soon.

@matteius matteius added the Contributor Candidate The issue has been identified/triaged and contributions are welcomed/encouraged. label Apr 25, 2025
@matteius matteius linked a pull request Apr 27, 2025 that will close this issue
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Contributor Candidate The issue has been identified/triaged and contributions are welcomed/encouraged.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants