无法打开文件'demo.py':[Errno 2]通过bash脚本运行时无此文件或目录

时间:2019-12-15 14:38:39

标签: python python-3.x bash shell

我有一个名为test-folder的文件夹,其中包含两个文件。

# file name: demo.py
print('hello world')
# file name: script.sh
python3.7 demo.py

test-folder位于/home/username/Documents/

我已将上述路径导出到.bashrc

现在,当我尝试使用以下命令执行script.sh时,

bash script.sh

我收到以下错误

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

我该如何解决?我在Ubuntu 18.04上

4 个答案:

答案 0 :(得分:0)

对我有用。您的设置是否与我的设置有所不同?

$ 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"

答案 1 :(得分:0)

移动到包含文件的文件夹: $ cd /home/username/Documents/test-folder

确保您位于包含文件的文件夹后,尝试:

$ python file_name.py

如果它不起作用,请尝试使用python的完整路径以及文件的完整路径,如下所示:

$ /usr/lib/python3.7 /home/username/Documents/test-folder/file_name.py

答案 2 :(得分:0)

如果您想在任何地方使用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,在demo.py上添加shebang并使demo.sh可执行,可以以一种更简单的方式实现目标。

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

demo.sh看起来像带有爆炸:

#!/usr/lib/python3.7

print('hello world')

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

答案 3 :(得分:0)

如果您的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扩展名不是必需的-您可以将文件命名为任意名称。