问题描述
操作系统:Mac 10.14.6
Python 版本:3.8.5
Python 和 Bash 的新手,如果这是一个愚蠢的问题,我很抱歉,但我在任何地方都找不到答案。我发现的最接近的是 this answer on this thread 但是,我已经在该文件上执行了 chmod +x
以更改权限以允许其可执行,我再次按照说明进行操作,但仍然无法获得工作。
基本上,我想通过终端从桌面上的指定文件夹(文件路径 ~/Desktop/Python\ Scripts
)运行 Python 脚本,而无需更改目录(纯粹出于懒惰)。
我将该文件夹添加到 PATH 中,当我在终端中运行 echo $PATH
时,可以看到它已列出。我认为这可以解决问题,但是当我尝试使用命令 python BoxprintV2.py
运行程序时,我通常会在更改目录时得到 python: can't open file 'BoxprintV2.py': [Errno 2] No such file or directory
如果我像以前一样更改当前目录,则此命令可以正常工作,并且可以正常运行我的程序,但我想从新的终端窗口运行,而不必每次都更改目录。已使用 chmod +x
我程序中的 Shebang 是 #!/usr/bin/env python3
。
解决方法
如果您运行命令 "~/Desktop/Python Scripts"
,Python 解释器将只检查当前目录。因此,这仅适用于您已经发现的工作目录为 boxprintV2.py
的情况。
因为您的脚本被标记为可执行文件并且它在文件的开头包含一个shebang,所以您只需输入$PATH
就可以直接从命令行执行它。然后 Bash 将在 int foo();
int main() {
foo();
while(1){}
}
中的所有目录中搜索该文件并执行它。
好的,我找到了一种解决方法,通过在 this answer on a different thread 之后创建一个 shell 脚本。
我所做的是打开一个空白的 textedit 文件,转到格式并将其转换为纯文本(或 ⇧ + ⌘ + T 切换富文本/纯文本)。
从那里我将这些命令输入到文档中,如下所示:
#! /bin/bash
cd ~/Desktop/Python\ Scripts
python boxprintV2.py
当我保存时,我没有指定文件扩展名并取消勾选“如果没有提供扩展名,请使用 .txt”框。我不确定这是否有必要,但我只是为可能和我有同样(懒惰)问题的其他人详细说明我的确切工作流程。
然后我回到一个空白的终端窗口并输入:
chmod +x ~/Desktop/Python\ Scripts/boxprintV2
允许所有用户执行 shell 脚本。
从这里我可以打开桌面上的 Python Scripts 文件夹,双击现在是 .exe 的纯文本文件,然后打开一个新的终端窗口,我的 Python 脚本正在运行!
这真的可以挽救我几十秒的生命。我敢肯定我无论如何都会浪费它们。