即使目录包含在 PATH 中,也无法在不更改目录的情况下从终端执行 运行 Python 脚本

Can't run Python script from Terminal without changing directories even though directory is included in PATH

OS: Mac 10.14.6

Python版本:3.8.5

Python 和 Bash 的新手,如果这是一个愚蠢的问题,我深表歉意,但我无法在任何地方找到答案。我找到的最接近的是 this answer on this thread 但是,我已经在该文件上执行了 chmod +x 以更改权限以允许它可执行,我再次按照说明进行操作,但仍然无法获取它工作。

基本上我想通过终端 运行 Python 桌面上指定文件夹(文件路径 ~/Desktop/Python\ Scripts)中的脚本,而不必更改目录(出于纯粹的懒惰)。

我将文件夹添加到 PATH,当我在终端中 运行 echo $PATH 时可以看到它已列出。我认为这可以解决问题,但是当我尝试使用命令 python boxprintV2.py 运行 程序时,就像我通常在更改目录时所做的那样,我得到 python: can't open file 'boxprintV2.py': [Errno 2] No such file or directory

如果我像以前一样更改当前目录,这个命令工作正常,我可以 运行 我的程序没问题,但我想 运行 从一个新终端 window 而不必每次都更改目录。使用 chmod +x

更改了文件的权限

我程序中的 Shebang 是 #!/usr/bin/env python3

如果你运行命令python <filename>,Python解释器将只检查当前目录。因此,这只有在您的工作目录是 "~/Desktop/Python Scripts" 时才有效,正如您已经发现的那样。

因为您的脚本被标记为可执行,并且它在文件的开头包含一个 shebang,您只需输入 boxprintV2.py 即可直接从命令行执行它。 Bash 将在 $PATH 中的所有目录中搜索此文件并执行它。

好的,我通过在 this answer on a different thread.

之后创建 shell 脚本找到了解决方法

我所做的是打开一个空白的 textedit 文件,转到格式并将其转换为纯文本(或 ⇧ + ⌘ + T 切换丰富 text/plain 文本)。

我从那里将这些命令输入到文档中,如下所示:

#! /bin/bash

cd ~/Desktop/Python\ Scripts

python boxprintV2.py

保存时我没有指定文件扩展名,也没有勾选“如果未提供扩展名,请使用 .txt”框。我不确定这是否有必要,但我只是为可能与我有相同(懒惰)问题的其他人详细说明我的确切工作流程。

然后我回到空白终端 window 并输入:

chmod +x ~/Desktop/Python\ Scripts/boxprintV2允许所有用户执行 shell 脚本。

从这里我可以打开我桌面上的 Python Scripts 文件夹,双击现在是 .exe 的纯文本文件,然后用我的 [ 打开一个新终端 window =38=]脚本运行!

它真的会节省我几十秒的生命。我确定无论如何我都会浪费它们。