代码之家  ›  专栏  ›  技术社区  ›  maxdu

-bash:无法执行:找不到所需的文件

  •  1
  • maxdu  · 技术社区  · 1 年前

    我在使我的pythonscript dartsap.py可用于我的pi时遇到了多个问题。

    一开始我试着用

    chmod +x dartsapp.py
    

    ./dartsapp.py
    

    但我得到了错误:

    -bash: ./dartsapp.py: cannot execute: required file not found
    

    我还将目录添加到PATH中,但仍然没有成功。之后我尝试使用pyinstaller,但当我尝试调用

    pyinstaller --version
    

    我也一样

    -bash: pyinstaller: command not found
    

    尽管我的路径看起来是这样的:

    maxdu@LEDpi:~/0306 $ echo $PATH
    /home/maxdu/0306:/home/maxdu/0306/dartsapp.py:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    

    我在这里错过了什么/做错了什么?

    使现代化

    ls -l /usr/bin/python3
    

    给我

    lrwxrwxrwx 1 root root 10 Apr  9  2023 /usr/bin/python3 -> python3.11
    

    head -n 3 dartsapp.py | cat -e
    

    给我

    #!/usr/bin/python3^M$
    ^M$
    # Python-App fM-CM-<r das PunktezM-CM-$hlen beim Darts^M$
    

    type python3
    

    给我

    python3 is hashed (/usr/bin/python3)
    
    2 回复  |  直到 1 年前
        1
  •  1
  •   Ed Morton    1 年前
    head -n 3 dartsapp.py | cat -e
    

    输出:

    #!/usr/bin/python3^M$
    ^M$
    # Python-App fM-CM-<r das PunktezM-CM-$hlen beim Darts^M$
    

    所以那些 ^Ms 每行结尾告诉我们 dartsapp.py 具有DOS行结尾,请参阅 linux-bash-shell-script-error-cannot-execute-required-file-not-found 有关此特定错误的详细信息,以及 Why does my tool output overwrite itself and how do I fix it? 有关DOS行结尾的详细信息。这两个问题都包含了针对此问题的各种修复方法,从运行 dos2unix dartsapp.py .

        2
  •  0
  •   Josh Brunton    1 年前

    要使用python解释器运行dartsap.py,请执行以下操作: 使用此命令可能会获得一些成功:

    python3 ./dartsapp.py
    

    与shell脚本不同(通常以 .sh 或者没有扩展),只要您有权限就可以执行,您需要使用python命令来执行python脚本。 python3 作为大多数现代linux安装的标准配置,因此这应该适用于树莓pi和您的开发机器。

    要使用pyinstaller将dartsap.py转换为自包含的可执行文件,请执行以下操作: 如果你已经下定决心要有一个自包含的可执行文件,你需要使用pip安装pyinstaller:

    python3 -m pip install pyinstaller
    

    然后对文件调用pyinstaller:

    python3 -m pyinstaller dartsapp.py
    

    (pyinstaller的功能远不止于此,请参阅 manual -但你不应该真的需要它来运行你的程序)