【问题标题】:python how to run python without specifying the interpreterpython如何在不指定解释器的情况下运行python
【发布时间】:2016-02-21 02:17:45
【问题描述】:

当你运行 python 脚本时,你必须这样做

python3 filename

有没有什么你可以在python文件中写的东西来制作它,这样你就不必在运行它之前说python3了。我尝试了 #!/ 行,但是当我这样做时:

./filename

它说权限被拒绝。运行程序时是否必须指定解释器名称?

【问题讨论】:

    标签: python interpreter permission-denied


    【解决方案1】:

    在 Python 文件的顶部,您需要添加 Python3 二进制文件的路径。这通常被称为“hashbang”或“shebang”。它告诉你的shell如何解释或运行你的文件(没有它,如果你尝试./<python-file>,它会尝试将它解释为bash

    #!/path/to/python3
    

    在我的电脑上是

    #!/usr/bin/python3
    

    要确定您的 python3 二进制文件(或链接)所在的路径,请运行

    $ which python3
    

    或者,最好使用env,因为它可以确保使用的解释器是您环境的$PATH 上的第一个解释器。

    #!/usr/bin/env python3
    

    注意,你需要运行

    $ chmod a+x <python-file>
    

    更改模式以使其可执行。 a 告诉它让它对所有人(用户、组和其他人)都可执行,所以如果你不想要这个,你可以把它去掉(如chmod +x &lt;python-file&gt;)。

    为了不必在可执行文件之前运行./,您需要将PATH 设置为

    export PATH=$PATH:.
    

    在您的 .bashrc 或类似的 *rc 文件中用于您的 shell。 (export 使变量可用于子进程。)然后你会想要运行

    $ source ~/.bashrc
    

    【讨论】:

    • 你会在哪里设置你的路径?
    • 假设您在 bashzsh 中,在您的 shell 中,尝试仅输入 PATH=$PATH:.,然后输入您的脚本名称(假设您的 hashbang 已就位)。
    • 为了确保我们清楚,您不要将 export PATH=$PATH:. 添加到您的 Python 脚本中,而是将其添加到您的 ~/.bashrc~/.zshrc(或将 setenv PATH ${PATH}:. 添加到您的~/.cshrc~/.tcshrc) 脚本。然后,正如我上面提到的,您 source ~/.bashrc 让更改发生在当前登录 shell 中(否则,您需要打开一个新 shell)。
    • 是的,我知道问题出在哪里,我做了所有这些,但我仍然必须将 ./ 放在 pythonfile 之前
    • 当您尝试在没有./ 的情况下运行 Python 脚本时,它会显示什么?
    【解决方案2】:

    我猜您使用的是基于 linux 或 unix 的操作系统。是的,您可以做一些事情。希望您使用import osimport sys 库与终端进行任何交互。接下来,您必须对文件执行chmod 命令以使其成为executable

    命令是

    chmod +x [python_file.py]

    或者通常(如果不是root)

    sudo chmod +x [python_file.py]

    【讨论】:

    • 不要忘记@Michael 回答中的路径。
    • 是的,该文件是我正在制作的一种简单语言的解释器,但有没有办法不必将 ./ 放在文件之前?就像在 java 中一样,您不需要输入 ./java 文件名。
    • 这是一个 linux 的东西。因此,如果您不输入./,而不是查看您所在的目录。python3 被您的终端识别为一个命令,它知道它位于哪个文件夹(因为它是一个 PATH 变量)。如果您想在终端中始终使用可用的命令,则需要查找 PATH 变量以及如何创建和添加它们。否则你不得不说,嘿,我想从我所在的目录运行python_file.py,从另一个文件夹说./python_file.pypath/to/file/python_file.py
    • 这应该会有所帮助:askubuntu.com/questions/195652/…
    • PATH 是脚本语言(或终端)的全局变量。我建议转到我在之前评论中添加的链接。请注意,如果您更改 PATH 变量或删除旧变量,您可能会删除像 python3 这样的旧内容。编辑此类内容时请小心。我认为将chmod 文件放在/opt/bin 文件夹中应该可以,但是您甚至没有告诉我们您使用的是什么操作系统,所以很难知道。我发布的链接提供了完成此任务的大量方法,但您已经脱离了问题的主题。
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 2011-06-26
    • 1970-01-01
    • 2023-01-25
    • 2010-10-01
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多