【问题标题】:Turn an application or script into a shell command将应用程序或脚本转换为 shell 命令
【发布时间】:2011-09-04 00:29:12
【问题描述】:

当我想从命令行(在 ubuntu 下)运行我的 python 应用程序时,我必须在源代码 app.py 所在的目录中并使用命令运行应用程序

python app.py

如何使用以下命令从任意目录运行应用程序(通常是如何完成的):app?同样当你键入lsmkdir 和其他命令?

谢谢

【问题讨论】:

    标签: python shell command-line


    【解决方案1】:

    与这里提到的有些不同的解决方案:使用别名。

    alias app='python /path/to/app.py'
    

    将上面的行添加到您的~/.bashrc~/.bash_login 文件中(如果您使用的是Ubuntu,最好添加到~/.bash_aliases)。然后您可以简单地将您的脚本用作带有app 的命令行工具。

    无需添加shebang(从而修改您现有的Python脚本),无需使脚本可执行,也无需更改您的PATH

    【讨论】:

      【解决方案2】:
      1. 添加 shebang: 作为文件的第一行:#!/usr/bin/python#!/usr/bin/python3(您可以使用 python -B 来防止生成 .pyc 文件,这这就是为什么我不使用/usr/bin/env)

      2. 使其可执行:您需要执行chmod +x app.py

      3. (可选)将目录添加到路径,因此可以在任何地方调用它: 将包含可执行文件的目录添加到$PATH 环境变量。你如何做到这一点取决于你的 shell,但可以是 export PATH=$PATH:/home/you/some/path/to/myscripts(例如使用 bash 的 Linux 发行版)或 setenv PATH $PATH:/home/you/some/path/to/myscripts(例如 Mac OS X 中的 tcsh)。例如,您需要将其放在 .bashrc 或您拥有的任何启动脚本中,否则每次登录时都必须重复此步骤。

      app.py 需要位于myscripts(或任何您命名的)文件夹中。你甚至不需要叫它app.py,但你可以重命名它app

      如果您想跳过第 3 步,如果您在同一目录中,您仍然可以通过 ./app 运行它。

      【讨论】:

        【解决方案3】:

        您可能希望符号链接到您的文件位置,而不是在路径中添加另一个位置

        chmod +x app.py
        ln ~app.py /opt/local/bin/app
        

        ...假设 /opt/local/bin 已经在您的路径中。

        另外,不要忘记将 shebang 行添加到脚本的第一行: #!/usr/bin/env python

        【讨论】:

          【解决方案4】:

          我很确定您必须通过 chmod +x 使脚本可执行,并将其放入系统的 PATH 变量中。

          【讨论】:

            【解决方案5】:
            1. 在文件开头添加shebang line

              #!/usr/bin/env python
              
            2. 通过调用使您的文件可执行

              chmod +x app.py
              

              在外壳中。

            3. 将其移动到包含在PATH 环境变量中的某个位置,并将其重命名为app。或者,将包含app 的目录的路径添加到PATH 环境变量中,方法是添加以下行

              export PATH=$PATH:/path/to/app
              

              发送至您的.bash_profile

            【讨论】:

            • @xralf:我实际上认为.bashrc 是错误的地方,因为您最终会在PATH 变量中获得多个路径实例(有效,但似乎毫无意义)。我不知道为什么.bash_profile 对你不起作用——也许它在 Ubuntu 上被称为 .profile,或者你的登录 shell 不是 bash(不太可能)或者 Ubuntu 在 X 登录时不执行你的登录 shell .
            【解决方案6】:

            将脚本所在的目录添加到您的路径中,使其可执行,并添加适当的 shebang 行。

            在你的.bashrc:

            PATH=$PATH:/dir/to/the/script
            

            可执行文件:

            chmod +x myscript.py
            

            在脚本的顶部,添加 shebang 行:

            #!/usr/bin/env python
            

            然后,你可以在任何地方做:

            myscript.py
            

            (请注意,您不需要 .py 后缀,它可以被称为任何名称,例如 app 如果您有适当的 shebang 行)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-11-14
              • 1970-01-01
              • 2013-11-07
              • 1970-01-01
              相关资源
              最近更新 更多