Python 使用相对路径从另一个py脚本运行py脚本

Python 使用相对路径从另一个py脚本运行py脚本,python,Python,在同一目录中时,会有相应的答案 然而,对于相对路径,我无法得到任何提到的答案。它们适用于已知完整路径的情况 我有以下文件夹层次结构 我需要在commander.py中调用并运行sub.py import importlib.util spec = importlib.util.spec_from_file_location('sub.py', '..//main/sub/sub.py') foo = importlib.util.module_from_spec(spec) spec.loade

在同一目录中时,会有相应的答案

然而,对于相对路径,我无法得到任何提到的答案。它们适用于已知完整路径的情况

我有以下文件夹层次结构

我需要在commander.py中调用并运行sub.py

import importlib.util
spec = importlib.util.spec_from_file_location('sub.py', '..//main/sub/sub.py')
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.main()
下面是commander.py中的内容

import importlib.util
spec = importlib.util.spec_from_file_location('sub.py', '..//main/sub/sub.py')
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.main()
它肯定能识别出这个目录,因为我可以看到pycache文件夹是在子文件夹中创建的

但是,子脚本不会运行。 我已经手动启动了子脚本,我知道它可以正常工作

子脚本具有以下结构

import stuff

def main():
   do stuff
return

while true:
  main()
break
我是python新手。 我也尝试过:

import sys
    sys.path.insert(0, '..\\main\sub')

    import sub.py 

    sub.main()
我用的是Py3.7
没有错误

在python中导入文件时,将运行该文件

import subprocess
import os
main_path = os.getcwd()
relative_path =r'..\\Main\sub'

filepath=os.path.join(main_path, relative_path[9:]) 
subprocess.call('python {filepath}', shell=True)
鉴于这种结构

-project
    -module
        -__init__.py
        -module_hello.py
    -__init__.py
    -hello.py
这些文件呢

# module_hello.py
print('hello')


运行hello.py将导致打印hello。

如果它们位于同一目录中,则此操作有效。请参考不在同一目录中的问题相对路径。这并没有回答我的问题在问题中,在图片中,您有一个主文件夹和一个子文件夹,所有脚本都位于其中,是否我错了?图片显示commander.py和sub.py位于两个不同的文件夹中。所有脚本不在同一文件夹中。您给出的答案不适用于相对路径。在问题中,您可能需要编辑您的问题,因为图片将其显示为子文件夹,并表示它是子文件夹,并且中间有一行,并且相对路径字面上显示sub.py在主文件夹内的子文件夹中。@Mel该相对路径仍然显示子文件夹在主文件夹内,然后允许您从子文件夹导入子文件夹,无论主文件夹在哪里,或者子文件夹不总是在主文件夹内,这将使..\\main\sub变得不相关,因为它将sub显示为在main中,或者从模块进行简单导入即可。@Mel sub.py文件的完整路径,即c:\users\user\project\subfolder\sub.pyI在标题中询问:相对路径,而不是完整路径。这意味着主文件夹的位置是动态的。这在“..\\main\sub”中传递。。负责相对路径。@Mel..\\main\始终存在