gpt4 book ai didi

尽管设置了 $PATH 和 shebang,Python 脚本仍然可以从目录运行,但不能作为 CLI cmd

转载 作者:太空狗 更新时间:2023-10-29 12:31:20 25 4
gpt4 key购买 nike

请直接跳到 EDIT 3 以了解此问题的原因(本文结尾)

TL;DR — 编辑器没有保存 shebang 行,但我不确定为什么。


我制作了一个脚本来清理下载文件夹(这主要是一个学习的东西)。但是,我无法将其用作 CLI cmd。

如果我从它所在的目录运行脚本,它很好并且可以做我想做的事

vco@geoHP:~/bin$ python3 clean_downloads.py 

这很好用。

脚本的第一行是:

#!/usr/bin/python3

据我所知,哪个是正确的?

然后在我的 .bashrc 文件底部:

119 # Modify the existing variable 'PATH'
120 # 'export' means make this available globally, instead of just for this file .
121
122 export PATH=$PATH:/home/vco/bin

这似乎也是需要的?

所以当我尝试从终端运行这个脚本时(几分钟后)我得到了一个错误:

vco@geoHP:~$ clean_downloads.py
from: too many arguments
/home/vco/bin/clean_downloads.py: line 24: syntax error near unexpected token `}'
/home/vco/bin/clean_downloads.py: line 24: ` }'
vco@geoHP:~$

所以我不确定为什么会这样,正如我所说,当脚本从它所在的目录运行时它运行良好......我用谷歌搜索了错误,它似乎是 Bash,而不是 Python 语法错误。

所以我猜它试图在 bash 而不是 Python 中运行我的脚本?

感谢任何帮助解决/解决这个问题的人。

here's a link to the script if needed, not sure if its relevant though


编辑 - 1

@Andrew - 我运行了命令

vco@geoHP:~$ bash --norc --noprofile PATH=/home/vco/bin clean_downloads.py

得到了

vco@geoHP:~$ bash --norc --noprofile PATH=/home/vco/bin clean_downloads.py
bash: PATH=/home/vco/bin: No such file or directory
vco@geoHP:~$

编辑 2 -

脚本设置为执行 -

vco@geoHP:~/bin$ ls -l
total 16
-rwxrwxrwx 1 vco vco 1699 Sep 29 22:36 clean_downloads.py
-rw-rw-r-- 1 vco vco 2184 Oct 3 14:47 functions.py
drwxrwxr-x 2 vco vco 4096 Sep 20 18:24 logs
-rwx------ 1 vco vco 479 Sep 21 18:34 pythonRsync.py
vco@geoHP:~/bin$

这是在 /usr/bin 目录中执行 ls 以检查 python3 是否在其中的结果:

vco@geoHP:/usr/bin$ ls | grep python3
dh_python3
idle-python3.4
python3
python3.4
python3.4m
python3m
vco@geoHP:/usr/bin$

编辑 3 -

我找到问题了!感谢所有帮助;出于某种原因,Sublime Text 实际上并没有添加 shebang?!我不知道它是如何工作的(或没有工作),但我在 Gedit 和 VIM 中打开了文件并且 shebang 不在第一行,我肯定会在 Sublime 中保存文件。我还仔细检查了它是否已保存,但它没有用。所以这对我来说很奇怪,我不确定是否有人知道为什么会这样?

我会把它作为对这篇文章的回答,但我不确定原因是什么,也不能真正解释太多,也许其他人知道为什么会发生这样的事情?

感谢大家的建议:)

最佳答案

您的脚本未设置为可执行。因此,shebang 行未被使用,您的 shell 正在退回到尝试运行脚本本身。

您需要将脚本设置为可执行。 chmod 755 clean_downloads.py

关于尽管设置了 $PATH 和 shebang,Python 脚本仍然可以从目录运行,但不能作为 CLI cmd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com