【问题标题】:pip freeze throws "The directory name is invalid"pip freeze 抛出“目录名无效”
【发布时间】:2023-01-16 22:36:29
【问题描述】:

在终端中运行 pip freeze 会抛出以下错误(完整回溯):

PS C:\Users\lhott> pip freeze
ERROR: Exception:
Traceback (most recent call last):
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\cli\base_command.py", line 167, in exc_logging_wrapper
    status = run_func(*args)
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\commands\freeze.py", line 87, in run
    for line in freeze(
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\operations\freeze.py", line 43, in freeze
    req = FrozenRequirement.from_dist(dist)
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\operations\freeze.py", line 237, in from_dist
    req, comments = _get_editable_info(dist)
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\operations\freeze.py", line 164, in _get_editable_info
    vcs_backend = vcs.get_backend_for_dir(location)
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\vcs\versioncontrol.py", line 238, in get_backend_for_dir
    repo_path = vcs_backend.get_repository_root(location)
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\vcs\git.py", line 501, in get_repository_root
    r = cls.run_command(
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\vcs\versioncontrol.py", line 650, in run_command
    return call_subprocess(
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_internal\utils\subprocess.py", line 141, in call_subprocess
    proc = subprocess.Popen(
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 966, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\lhott\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1435, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
NotADirectoryError: [WinError 267] The directory name is invalid

我有 Python 3.10.2。 pip freeze 直到今天都工作得很好,我不明白为什么。我最近更新了它,但我不知道为什么会这样。我也可以毫无问题地安装包 pip install。例子:

解决方案尝试:

  • 我已尝试重新启动笔记本电脑。
  • 以管理员权限运行终端。

【问题讨论】:

  • 如果您使用的是虚拟环境,请先尝试激活它。
  • 那肯定不是针对你的。也就是说,pip 应该在没有激活 venv 的情况下工作(应该冻结当前全局安装的包)。也许pip install -U pip
  • 关于@HarshGupta 的 pip freeze 问题时的正确目录,无论你身在何处,你都应该能够运行pip freeze。直到今天一直有效。
  • “pip list --format=freeze”有效吗?也许您的依赖项之一安装错误。建议的命令可能会阻止该问题。使用虚拟环境可能比使用官方 python 安装更好。通过这种方式,您可以更好地控制环境内容,并且更易于管理和保持清洁。

标签: python pip


【解决方案1】:

我过去实际上遇到过类似的问题,我通过升级 PIP 解决了这个问题

pip install pip --upgrade

【讨论】:

    【解决方案2】:

    我实际上找到了答案。 @Greg7000 说 Maybe one of your dependency is badly installed 实际上给了我一个提示。

    我安装了一个依赖项(一个朋友的包),我通过在相应的文件夹上按删除而不是执行 pip uninstall 来手动卸载它。这很可能会产生错误“目录名无效”。即使在手动删除相应文件夹后使用pip uninstall 也可以解决问题。

    【讨论】:

      【解决方案3】:

      就我而言,它是 Python 3.8 和 3.11 包的混合体。使用pip list 查询包并查找任何奇怪的引用。在“可编辑项目位置”列下,我找到了 3.8 包位置参考。

      使用 pip uninstall <PACKAGE_NAME> -y 手动卸载奇怪的软件包组合。

      【讨论】:

        猜你喜欢
        • 2021-02-26
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 2010-09-08
        • 2010-11-02
        • 1970-01-01
        相关资源
        最近更新 更多