【问题标题】:I get a traceback error when using the command "pipenv run python"使用命令“pipenv run python”时出现回溯错误
【发布时间】:2020-12-28 16:45:30
【问题描述】:

更新:问题来自创建 .virtualenv 目录的路径中的特殊字符。我通过在 C: 中重新路由 .virtualenv 来修复它,并最终将编辑用户名以避免将来出现此问题。

我在工作笔记本电脑(windows pro)上的“pipenv run”遇到了一些问题,似乎找不到我的问题的解释。例如,我在桌面上创建了一个测试目录,其中放置了一个打印“Hello”的基本脚本。

我在项目文件夹中启动 pipenv,它工作正常,我可以启动 shell、安装包、运行脚本(在 shell 中)等等。

但是,每当我尝试从主命令提示符(不在 pipenv shell 内部)运行脚本时,我都会得到回溯:

C:\Users\jérôme\Desktop\tester> pipenv run python testit.py

其他一些细节:

  • 在我的个人机器(Windows 家族版)上运行上述命令效果很好
  • 我之前做过“pipenv lock”来检查是否可能是问题所在。不是
  • 我在两台机器上都使用 python 3.7.9
  • 安装时将 Python 添加到路径变量中
  • 我也尝试过使用 python 3.8.6 并得到同样的错误
  • 我尝试完全卸载所有 python 版本并重新安装它
  • 我的工作机器上的用户名是特殊字符(é、ô),这可能是原因吗?

回溯错误...

Traceback (most recent call last):
  File "c:\users\jérôme\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)

  File "c:\users\jérôme\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)

  File "C:\Users\jérôme\Python37\Scripts\pipenv.exe\__main__.py", line 7, in <module>

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 782, in main
    rv = self.invoke(ctx)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\vendor\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\cli\command.py", line 450, in run
    command=command, args=args, three=state.three, python=state.python, pypi_mirror=state.pypi_mirror

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\core.py", line 2547, in do_run
    run_fn(*run_args, **run_kwargs)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\core.py", line 2468, in do_run_nt
    p = _launch_windows_subprocess(script)

  File "c:\users\jérôme\python37\lib\site-packages\pipenv\core.py", line 2458, in _launch_windows_subprocess
    return subprocess.Popen([command] + script.args, **options)

  File "c:\users\jérôme\python37\lib\subprocess.py", line 800, in __init__
    restore_signals, start_new_session)

  File "c:\users\jérôme\python37\lib\subprocess.py", line 1207, in _execute_child
    startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file specified

【问题讨论】:

  • 要排除特殊字符,您可以在此 tmp 目录中创建 c:\tmp 和测试 pipenv。
  • 我有点惭愧,我在这里问之前没有尝试过。原来路径中的特殊字符是问题所在。感谢您的帮助。

标签: python shell pipenv traceback


【解决方案1】:

问题的根本原因是用户目录路径中的特殊字符,这里也默认创建了 pipenv 的 .virtualenv 目录。 OP 报告已通过在 C 中重新路由 .virtualenv 解决了该问题:

快速测试,例如c:\tmp 可以帮助排除这个原因。

【讨论】:

    【解决方案2】:

    我遇到了这个问题,我通过卸载 anaconda 解决了。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 2021-11-14
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多