gpt4 book ai didi

python - WSL——未找到命令

转载 作者:行者123 更新时间:2023-12-04 18:38:59 28 4
gpt4 key购买 nike

我在 PowerShell wsl pipenv run python ~/test.py 中运行以下命令并收到以下错误 /bin/bash: pipenv: command not found .如果我启动 WSL/Ubuntu,我可以运行 pipenv run python ~/test.py并获得成功的输出。在 PowerShell 和 Git Bash 中,我可以运行 pipenv -h并获得适当的输出。 WSL 在哪里寻找这个命令?
在相关说明中,我可以运行 python ~/test.pypython3 ./test.py当我启动 WSL/Ubuntu 并获得成功的输出时。但在 PowerShell 中,只有 wsl python3 ~/test.py作品。当我运行 wsl python ~/test.py我收到相同的命令未找到错误。我错过了什么?

最佳答案

根据我们的评论交流,问题在于 pipenv 所在的目录可执行文件位于 - /home/<username>/.local/bin/ - 不存在于 PATH 中以非交互方式调用命令时的环境变量。
这表明它是一个扩展 PATH 的初始化文件。 , 好像是~/.bash_profile在你的情况下;强制显式 bash调用以获取此文件,-l ( --login ) 选项必须通过。
您报告以下命令最终为您工作:

bash -l -c "cd ~ && pipenv run python ~/test.py"

笔记:
  • 带有 -c 的显式调用是什么wsl.exe当您向它传递要执行的命令时,它会在幕后执行,尽管没有 -l (例如 wsl date 变成 bash -c date )。
  • 使用-c使外壳非- interactive ,这意味着 ~/.bashrc也不是来源;如果您想要后者,请添加 -i

  • 没有命令(只执行 wsl.exebash.exe ),交互式 bash输入了 shell,它实际上使用了 -l ,因此自动获取 ~/.bash_profile ( wsl.exe/bash.exe 使用替代机制来请求登录 shell:参数数组的第一个条目(您可以使用 echo $0 进行检查)设置为 -bash ,初始 - 告诉 Bash启动登录外壳)。

  • 另请参阅:谢谢, Zymotik .
  • Invoking Bash
  • Bash Startup Files
  • 关于python - WSL——未找到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67894449/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com