Python 使用相对路径从另一个py脚本运行py脚本
在同一目录中时,会有相应的答案 然而,对于相对路径,我无法得到任何提到的答案。它们适用于已知完整路径的情况 我有以下文件夹层次结构 我需要在commander.py中调用并运行sub.pyPython 使用相对路径从另一个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
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\始终存在