即使目录包含在 PATH

问题描述

操作系统: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 脚本正在运行!

这真的可以挽救我几十秒的生命。我敢肯定我无论如何都会浪费它们。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...