shell 无法打开文件“demo.py”:[Errno 2]运行bash脚本时没有此类文件或目录

esyap4oy  于 2022-11-16  发布在  Shell
关注(0)|答案(4)|浏览(112)

我有一个名为test-folder的文件夹,其中包含两个文件。
第一个
test-folder存在于/home/username/Documents/内部
我已经将上述路径导出到.bashrc
现在,当我尝试script.sh使用以下命令执行www.example.com时,

bash script.sh

我收到以下错误

python3.7: can't open file 'demo.py': [Errno 2] No such file or directory

我该怎么解决这个问题?我在Ubuntu 18.04上

4smxwvx5

4smxwvx51#

移动到包含文件的文件夹:$ cd /home/username/Documents/test-folder
确保您位于包含该文件的文件夹C中后,请尝试:
$ python file_name.py
如果不起作用,请尝试python的完整路径和文件的完整路径,如下所示:
$ /usr/lib/python3.7 /home/username/Documents/test-folder/file_name.py

jchrr9hc

jchrr9hc2#

如果你想从任何地方使用script.sh,你的方法都不起作用。当执行$ bash script.sh时,文件script.sh应该位于工作目录中。
您可以使用绝对路径来解决此问题:

# filename: script.sh

python3.7  /home/username/Documents/test-folder/demo.py

尝试使用bash /home/username/Documents/test-folder/script.py执行此操作。
你可以用一种可以说是更简单的方式来实现你的目标,把/home/username/Documents/test-folder添加到你的PATH中,把一个shebang添加到demo.py中,并使demo.sh成为可执行的。

$ export PATH=/home/username/Documents/test-folder:$PATH
$ chmod +x /home/username/Documents/test-folder/demo.py

demo.sh将如下所示,并带有一个shebang:

#!/usr/lib/python3.7

print('hello world')

并且可以使用$ demo.sh从任何地方执行。

62o28rlo

62o28rlo3#

对我来说很有效。你的设置和我的有什么不同吗?

$ cat demo.py 
print("Hello World")

$ cat script.sh 
python3.7 demo.py

$ tree
.
└── test-folder
    ├── demo.py
    └── script.sh

1 directory, 2 files

$ cd test-folder/
$ bash script.sh 
Hello World

编辑:尝试以下操作。

$ cat script.sh
python3.7 "`dirname "$0"`/demo.py"
pcww981p

pcww981p4#

如果你的script.sh文件只是用来运行Python脚本的,那么就不需要它,而是让Python脚本本身成为可执行文件。
(1)在Python文件中添加以下内容作为第一行--这将告诉Unix在运行此文件时使用哪个解释器:

#!/usr/bin/env python37

(2)将Python文件设置为可执行文件,以便可以直接运行:

chmod +x demo.py

(3)将该文件放在路径上,例如,通过Bash配置文件设置的路径,或者已经在路径上的路径,如/usr/local/bin
现在,只要你给予demo.py命令,你的脚本就会运行。注意,.py扩展名不是必需的--你可以随意命名文件。

相关问题