从操作系统命令行调用路径上的.py文件



我用Python 3编写了一个脚本,并将其存储在路径上的Tools/文件夹中。这个文件(在本文中称为example.py(读取本地inputfile.yml。我可以使用找到该文件

which example.py

我已经使用验证了python3的安装和路径

which python3

我现在正试图从linux命令行运行以下命令:

python3 example.py inputfile.yml

我也试过:

example.py inputfile.yml

如何运行非本地但在路径上的python脚本?

要运行脚本,python需要找到它(它在PATH上,所以你在那里很好(,它需要是可执行的(774对用户和组都很好(并且linux需要知道如何执行它;shebang";。如果文件顶部看起来像

#!somepath someparams

linux将尝试使用someparams和脚本的路径在somepath上执行程序。所以,

#/bin/sh

使用系统外壳运行程序。

#/usr/bin/python3

在该位置使用python运行程序。可以使用env程序将程序与绝对路径解耦。据此,env将在路径上搜索称为";蟒蛇3";并使用它。env究竟驻留在哪里还有待商榷。它通常在/bin和/usr/bin中。

#!/usr/bin/env python3

#/bin/env python3

在Unix系统(包括Linux(上执行此操作的正常方法是使Python文件可执行,并将正确的Python路径放在第一行中,如下所示:

#!/usr/bin/python3

(或者Python安装的正确路径——使用which python3进行检查(。

请确保该文件是可执行的。然后您可以直接从命令行调用它:

example.py inputfile.yml

Python3将根据.py文件第一行中给出的路径自动调用。

正如tdelaney所指出的,你可以交替使用:

#!/usr/bin/env python3

如果您想从用户的路径中获取python3,而不是显式地给出路径。这是否更可取取决于你的需求。

但从您的评论中,听起来错误消息是在抱怨找不到python3r。这意味着该行以返回字符(r,即^M(结束。这强烈表明它是一个DOS文件。DOS文件使用一对字符来结束行rn。只需将其转换为非DOS文件,使该行以n结尾,不包含r字符。这将解决你的问题。

最新更新