我有一个名为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上
答案 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
扩展名不是必需的-您可以将文件命名为任意名称。