首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当脚本在PATH中时,为什么下面的.sh脚本说找不到.py命令?

这个问题可能是由于以下几个原因导致的:

  1. 脚本没有执行权限:请确保.sh脚本具有执行权限。可以使用chmod命令添加执行权限,例如:chmod +x script.sh。
  2. 脚本中的命令错误:请检查.sh脚本中调用的.py命令是否正确。确保命令的拼写和路径都是正确的。
  3. 脚本和.py文件不在同一目录:如果.sh脚本和.py文件不在同一目录下,需要在脚本中指定.py文件的完整路径或者将.py文件所在的目录添加到PATH中。
  4. PATH环境变量配置错误:请确保PATH环境变量中包含了.py文件所在的目录。可以使用echo $PATH命令查看当前的PATH配置,并使用export命令添加.py文件所在目录到PATH中,例如:export PATH=$PATH:/path/to/py/file。
  5. 脚本和.py文件的权限问题:请确保.sh脚本和.py文件都具有执行权限。可以使用chmod命令添加执行权限,例如:chmod +x script.sh和chmod +x script.py。

总结起来,当脚本在PATH中时,如果.sh脚本说找不到.py命令,需要确保脚本具有执行权限,脚本中的命令正确,脚本和.py文件在同一目录或者在PATH中,以及脚本和.py文件都具有执行权限。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

crontab定时任务不执行的原因

,也会失败 3 路径问题 有的命令shell执行正常,但是crontab执行却总是失败。...但是crontab,就会找不到这个脚本,比如写完整: /root/test.sh 4 时差问题 因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。...其实路径是个非常容易出问题的地方,假设在/home/denglinjie目录下有一个脚本文件test1.sh,然后该目录下还有一个脚本文件test2.sh test1.sh执行了test2.sh,...如果在crontab -e编辑的时候,执行的方式是 sh /home/denglinjie/test1.sh执行到调用sh test2.sh的时候,系统会认为是从crontab文件所在的目录去找test2...PATH;cd /data/denglinjie/work/UpdateModuleSwitch;python update_switch.py 因为我的这个python是安装在我自己的用户目录下,所以系统找不到这个

5.4K10

【实测】python & pycharm & 终端 导入上级模块文件的问题

原来小伙伴的问题难点在于,同样的脚本pycharm运行就没问题。终端运行就报这个错误。 本节课就是要探寻一这种报错到底是怎么回事,又要怎么解决?...但是当我们终端对同一个脚本p2.py 执行时,终端却没有pycharm那么大的能力,去搜索到这个所谓的t1模块。所以就会报错 ,找不到t1。...那现在我们再来看看之前的报错: 注意,这里是报错t1模块找不到。 那么这个路径的值,既不是写到t1本身,更不是写到t1面的p1.py 。!!! 此时 你去终端执行p2.py仍然会报一样的错误。...所以正确答案是写到 TTT即可: 这时候你再去终端执行,结果就正常了: 好了,为什么要突然这个呢?...因为我的培训,有测试平台关联游离脚本的设计,此时用的shell命令去调用可插拔的脚本,结果在终端执行的时候,有的小伙伴路径写错就会提示找不到脚本的父级模块等问题。

1.3K20
  • Linux系列教程(二十二)——Linux的bash变量

    shell 脚本需要保存一些信息,如一个文件名或者一个数字,就把它放在一个变量里。每个变量都有一个名字,可以根据名字来引用变量。   ...但是实际上我们调用某个命令直接使用命令名就可以了,比如cd,ls等等这些常用的,这是为什么呢?   ...原因就是 $PATH 里面我们已经定义好了,我们执行某个名称的命令,系统会首先去$PATH里面查找,如果找不到才会报找不到命令错误。 首先看一$PATH: ?   ...12、环境变量配置文件   前面我们将环境变量的时候,我们将脚本的路径加入到 $PATH 路径,然后就可以直接通过脚本的名称来执行脚本。...但是如果系统重启之后,发现又必须要重新加入到 $PATH 变量才可以。那么有没有让它一直生效的方法呢?   解决办法就是环境变量配置文件中加入脚本的路径。

    1.2K100

    命令调试 django 项目中的模块方法

    首先,配置文件设置环境变量,例如这里用到的配置文件是settings.pyimport os os.environ['MODULE_DEBUG'] = 'off' # 默认框架启动初始化为off,...,就可以不用启动框架执行相应的调试代码(其实python manage.py shell还是有启动框架了,只是这样可以直接一行命令执行而不用先进入python shell里再执行多次) 但是上面这个命令用起来不方便...,于是写了个脚本简化一django_debug.py #!...">> $tmp_file cat $tmp_file|python manage.py shell rm $tmp_file 然后,只要在项目的根路径(即跟manage.py相同的目录下),执行该脚本.../django_debug.sh apps/example/task.py 这样一来,调试起来是不是简单很多了呢~

    4.3K00

    关于SSH远程执行命令和环境变量的问题

    利用Pycharm进行远程调试过程配置好远程解释器后,运行代码是通过SSH直接执行的方式,远程进行命令脚本调试。...,可以直接在bash_profile中加入了export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64,然后source一,指定了程序执行时的动态链接库寻找路径.../bin/python 这个任务不是登录Linux系统启动的(比如你命令行提示符上输入bash启动),因此不会执行/etc/profile文件,而会去用户的HOME目录检查.bashrc并加载。...login故名思义,即登陆,login shell是指用户以非图形化界面或者以ssh登陆到机器上获得的第一个shell,简单些就是需要输入用户名和密码的shell。...通常来说如bash script.sh此类执行脚本命令就会启动一个non-interactive shell,它不需要与用户进行交互,执行完后它便会退出创建的Shell。

    1K40

    关于 Linux shell 你必须知道的

    比如,我现在有个自动连接宽带的 shell 脚本connect.sh,存在我的家目录: $ where connect.sh /home/fdl/bin/connect.sh 如果我想删除这个脚本,...shell 的行为可以测试,使用set -x命令,会开启 shell 的命令回显,你可以通过回显观察 shell 到底执行什么命令: 可见 echo (cmd) 和 echo " 也就是,如果 $...四、sudo 找不到命令 有时候我们普通用户可以用的命令,用sudo加权限之后却报错 command not found: $ connect.sh network-manager: Permission...denied $ sudo connect.sh sudo: command not found 原因在于,connect.sh这个脚本仅存在于该用户的环境变量: $ where connect.sh.../home/fdl/bin/connect.sh 使用sudo,系统认为是 root 用户执行命令,所以会去搜索 root 用户的环境变量,而这个脚本 root 的环境变量目录当然是找不到

    2.1K20

    关于 Linux shell 你必须知道的

    比如,我现在有个自动连接宽带的 shell 脚本connect.sh,存在我的家目录: $ where connect.sh /home/fdl/bin/connect.sh 如果我想删除这个脚本,...正常情况,shell 进程会阻塞,等待子进程退出才重新接收你输入的新的命令。加上&号,只是让 shell 进程不再阻塞,可以继续响应你的新命令。...四、sudo 找不到命令 有时候我们普通用户可以用的命令,用sudo加权限之后却报错 command not found: $ connect.sh network-manager: Permission...denied $ sudo connect.sh sudo: command not found 原因在于,connect.sh这个脚本仅存在于该用户的环境变量: $ where connect.sh.../home/fdl/bin/connect.sh 使用sudo,系统认为是 root 用户执行命令,所以会去搜索 root 用户的环境变量,而这个脚本 root 的环境变量目录当然是找不到

    1.8K10

    Linux crond 不执行原因分析

    但是,让crond来周期性执行脚本发送邮件通知,遇到了问题,crontab -e里面加入了执行脚本之后,发现脚本并没有执行。 可是,通过手动执行Shell脚本命令(..... ~/.bash_profile 4、没有使用绝对路径 这里的绝对路径包括脚本的路径和crond命令的路径两个方面,例如: */10 * * * * sh /root/script/mysql_files_monitor.sh.../crontab/yanggang ,添加了如下命令日志文件 /var/spool/mail/yanggang 中提示找不到 xxx.sh 路径 30 * * * *  /home/barry/top800...这是因为你crontab中使用了绝对路径执行脚本 top10_all.sh,因此脚本 top10_all.sh 引用的其它脚本也都需要使用绝对路径,才能被crontab找到并执行。.../top10_all.sh(推荐用此方式) 先进入该目录,然后执行脚本;否则,执行脚本的其它脚本都需要加绝对路径

    6.3K110

    为什么执行自己的程序要在前面加.

    来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 前言 Linux,我们执行内置命令,直接输入命令名称即可,如: $ mv a b #将a重命名为b 而在执行自己写好的程序时...PATH查找 以ls为例,shell输入ls,首先它会从PATH环境变量查找,PATH内容是什么呢,我们看看: $ echo $PATH /usr/local/sbin:/usr/local/bin...小结一面的内容,就是,如果是文本程序,且开头没有指定解释程序,则按照shell脚本处理,如果指定了解释程序,则使用解释程序来解释运行;对于二进制程序,则直接创建新的进程即可。...不过对于shell脚本,你还可以像下面这样执行: $ sh test.txt $ . test.txt 即便test.txt没有执行权限,也能够正常执行。 什么?你为什么txt也能执行?...将程序放到PATH路径 第一种方法就是将我们自己的程序放到PATH的路径中去,这样shell输入hello,也能找到,例如我们将其放在/bin目录下: $ hello hello world $

    89140

    Linux为什么执行自己的程序要在前面加.

    Linux,我们执行内置命令,直接输入命令名称即可,如: $ mv a b #将a重命名为b 而在执行自己写好的程序时,却要带上....PATH查找 以ls为例,shell输入ls,首先它会从PATH环境变量查找,PATH内容是什么呢,我们看看: $ echo $PATH /usr/local/sbin:/usr/local/bin...小结一面的内容,就是,如果是文本程序,且开头没有指定解释程序,则按照shell脚本处理,如果指定了解释程序,则使用解释程序来解释运行;对于二进制程序,则直接创建新的进程即可。...不过对于shell脚本,你还可以像下面这样执行: $ sh test.txt $ . test.txt 即便test.txt没有执行权限,也能够正常执行。 什么?你为什么txt也能执行?...将程序放到PATH路径 第一种方法就是将我们自己的程序放到PATH的路径中去,这样shell输入hello,也能找到,例如我们将其放在/bin目录下: $ hello hello world $

    1.5K30

    如何编写bash脚本以便在进程死机时重新启动进程

    # keepalivescript.sh if processidfile exists: if processid is running: exit, all ok run checkqueue.py...write processid to processidfile 我将从crontab调用它: # crontab */5 * * * * /path/to/keepalivescript.sh...." >&2 sleep 1 done 上面的bash代码一个until循环中运行procA。第一行启动procA并等待它结束。它结束,until检查其退出状态。...在这种情况,我们不想重新启动它(我们只是要求它关闭!如果退出状态不是0,until将运行循环体,该循环体STDERR上发出错误消息,并在 1 秒后重新启动循环(返回第 1 行)。...然后需要做的就是启动这个bash脚本,它将监控procA并在必要重新启动它。如果你想在(操作系统)启动启动监控脚本,你可以用@reboot规则在用户的 cron(1) 调度它。

    18720

    【翻译】请停止编写 shell 脚本

    然后,有一天,你的 shell 脚本做了一些完全错误的事情。 那是你意识到你的错误的时候:​​bash​​和一般的 shell 脚本语言,默认情况大多是被破坏的。...接下来让我们考虑以下脚本,它尝试将目录添加到PATH环境变量。 ... Python 你会得到一个NameError例外;在编译语言中,代码甚至无法编译。bash脚本只是继续运行;会出什么问题?解决方案是set -u: #!...那么为什么不使用默认情况实际处理错误的编程语言呢? 更广泛地,几乎每一种具有相当规模用户群的编程语言都会有某种面向脚本的库或习语。例如,Rust 也有​​xshell​​, 和其他库。...因此,大多数情况,您可以使用您选择的编程语言而不是 shell 脚本。 不好的原因 #2:只需编写正确的代码!

    2.4K21

    Python 自动化指南(繁琐工作自动化)第二版:附录 B:运行程序

    从终端窗口运行程序 您打开终端窗口(如 Windows 上的命令提示符或 MacOS 和 Linux 上的终端),您会看到一个几乎空白的窗口,您可以在其中输入文本命令。...要查看存储PATH环境变量的值, Windows 上运行echo %PATH%, MacOS 和 Linux 上运行echo $PATH。...py.exe程序安装在C:\Windows\py.exe,已经PATH环境变量,键入.exe文件扩展名是运行程序时可选的。...每个命令开头的@符号防止它显示终端窗口中,并且%*将在批处理文件名后输入的任何命令行参数转发给 Python 脚本。Python 脚本依次读取sys.argv列表命令行参数。...从终端运行 Python python或python3之后和py文件名称之前包含-O开关。这将运行您的程序的优化版本,跳过断言检查。

    1.8K40

    Ubuntu 定时执行脚本

    一、关于crontab cron是一个Linux定时执行工具,可以无需人工干预的情况运行作业。Ubuntu,cron是被默认安装并启动的。 二、例子 直接上例子,来看看怎么用。...需求:定时每天8点,自动执行保存在/root目录下hello.sh脚本 1、方法很简单,只需编辑ectcrontab文件就行了,这个文件里存放的就是cron要执行的命令,以及定时执行的时间 vim /...a、你可以hello.py中使用绝对路径添加环境变量: import sys sys.path.insert(0, '/root/bbb/') 添加完环境变量,hello.py中就可以直接引入world.py...解释一,运行目录不是你python脚本文件的路径,而是你执行python命令的路径。比如你/root路径运行下面这个脚本,那么你的运行目录就是/root。...如果你/root/ccc/ddd路径执行这个命令,那么你的运行目录就是/root/ccc/ddd。

    2.1K10

    Voltron:一款功能强大的可扩展调试器UI工具包

    /install.sh 默认配置,安装将本将会把Voltron安装到用户的“site-packages”目录下,如果你想要安装到系统“site-packages”目录,可以使用-s选项: $ ..../install.sh -s 我们还可以将其安装到虚拟环境(仅支持LLDB): $ ..../install.sh -v /path/to/venv -b lldb 工具使用 如果你的调试器提供了初始化脚本,可以直接配置其启动(entry.py入口点脚本)加载Voltron。...比如macOS上,脚本路径为“/Library/Python/2.7/site-packages/voltron/entry.py”,install.sh脚本会将其添加进GDB和LLDB的相关路径.../vdbbin target_binary > script /path/to/voltron/entry.py 在其他终端窗口中,我们就可以使用下列命令来查看UI视图了: $ voltron view

    1.1K10

    【AI白身境】Linux干活三板斧,shell、vim和git

    01Linux基础命令与shell脚本 通过第一篇的介绍,我们已经知道Linux下面操作会比windows效率高很多,下面和大家讲解一Linux的基础操作,默认大家已经装好了Linux系统。...示例: mkdir /data/path /data路径创建path文件夹。...比如脚本test.sh x=$1 y=$2 z=$3 echo $1 $2 $3 调用的时候就可以:sh test.sh 1 2 3 1.9 shell脚本文件之遍历目录 问题: 1....2.3 安装git 下面我将ubuntu18.04上安装git,其他的linux系统其实也是一样的,安装方法很简单,输入下面命令即可安装。...: 切换到底线命令模式,以最底一行输入命令 3.2 输入模式 输入模式可以对文件执行写操作,类似Windows 的文档输入内容。

    65240

    关于 python ImportError: No module named 的问题

    事后我查了 python 的import机制,以备忘: python,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。...首先需要使用sys.path.append方法将b.py所在目录加入到搜素目录。...但是如果你没有发现上面代码有什么问题的话,可要注意了,上面的代码有时会找不到模块或者包(ImportError: No module named xxxxxx),这是因为: sys模块是使用c语言编写的...sys.path是python的搜索模块的路径集,是一个list 可以python 环境使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失了...这里的路径会自动加入到sys.path,而且可以不同的python版本中共享,应该是一样较为方便的方法。

    2.9K50

    七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思

    -1.0.0.tar.gz 方式二:直接下载脚本 sh download_model.sh (4)模型评估 基于已有的预训练模型和数据,可以运行下面的命令进行测试,查看预训练的模型测试集(test.tsv...# TextCNN 模型 sh run.sh eval # ERNIE 模型 sh run_ernie.sh eval (5)模型训练 基于示例的数据集,可以运行下面的命令训练集(train.tsv...# 基于ERNIE的训练、预测、评估运行脚本 ├── run.sh # 训练、预测、评估运行脚本 ├── utils.py # 定义了其他常用的功能函数...run.sh脚本修改如下: # train()函数,增加--init_checkpoint选项;修改--vocab_path --init_checkpoint ....,安装命令如下: $ pip install paddlehub 快快自己动手尝试吧!

    44130
    领券