Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从同一目录中的shell脚本运行python文件_Python_Bash_Shell - Fatal编程技术网

Can';t从同一目录中的shell脚本运行python文件

Can';t从同一目录中的shell脚本运行python文件,python,bash,shell,Python,Bash,Shell,我试图从一个Python程序调用一个shell脚本,该程序反过来运行一个Python程序。因此,我创建了一个名为run.sh的文件,其中包含以下代码行: source venv/bin/activate python main.py 上述脚本将由此代码调用 from pathlib import Path import os import subprocess class Handler: ENTRYPOINT = 'run.sh' def run(self, proje

我试图从一个Python程序调用一个shell脚本,该程序反过来运行一个Python程序。因此,我创建了一个名为
run.sh
的文件,其中包含以下代码行:

source venv/bin/activate
python main.py
上述脚本将由此代码调用

from pathlib import Path
import os
import subprocess

class Handler:

    ENTRYPOINT = 'run.sh'

    def run(self, project_path):
        if os.path.exists(project_path):
            subprocess.call(['bash', project_path+self.ENTRYPOINT])
        else:
            print('Project path does not exist!')
因此,每当执行上面的run方法时,它就会抛出这个错误

python:无法打开文件“main.py”:[Errno 2]没有这样的文件或目录


run.sh文件和main.py文件位于同一级别。我对shell脚本不太了解&只是在谷歌上搜索一下,但我找不到上述错误的原因。甚至不确定是否与该shell脚本有关。非常感谢您的帮助。

我猜您是从脚本所在目录以外的另一个目录调用
run.sh
?如果是这样,这就可以解释一切了。您使用的是相对路径,该路径根据当前工作目录(
pwd
)进行解析

要使脚本在任何地方工作,请查看

在linux上:

cd“$(dirname“$0”)”#将cd放入run.sh所在的目录中
python main.py

谢谢@Derlin。它现在正在工作。上面的链接有助于理解问题。
run.sh
文件的位置与您的问题无关。在Python调用之前,在脚本中执行a
ls-ld$PWD/*.py
,查看此目录中有哪些Python文件。