如何修复导入的路径解析
How to Fix Path Resolution for Imports
当我将我的部分合并到一个更大项目的拉取请求中时,我在将包导入项目时遇到了问题。 runner.py
利用目录 2 中每个子目录中的模块和脚本。子目录中的一些模块现在需要访问目录 1 和目录 3 中的模块。
我试过附加系统路径,这不是正确的方法,但这似乎对某些事情有效并破坏了其他事情。我已尝试指定父目录,但这似乎不起作用,因为 Python 更改了调用时的工作目录。因此,如果我从 Project Directory
开始并执行 python Dir_2/runner.py
,我的实际工作目录将是 Project Directory/Dir_2
而不是项目目录。如果我 sys.path.append(os.getcwd())
我中断了一些标准库导入。我在这里错过了什么?
我尝试过的事情
通过附加 .或 .. 到进口的前面。这生成
__main__module does not exist or "You are attempting to access a directory above the root of this project".
项目的形状
- 项目目录
- 目录 1
- 目录 2
- runner.py
- 子目录 1
- 子目录 2
- 子目录 3
- 目录 3
不要 运行 子目录中的文件就好像它们是脚本一样。如果它是包结构的一部分,它是一个 模块 ,而不是一个脚本,所以 运行 它是一个:
python -m dir2.runner
当我将我的部分合并到一个更大项目的拉取请求中时,我在将包导入项目时遇到了问题。 runner.py
利用目录 2 中每个子目录中的模块和脚本。子目录中的一些模块现在需要访问目录 1 和目录 3 中的模块。
我试过附加系统路径,这不是正确的方法,但这似乎对某些事情有效并破坏了其他事情。我已尝试指定父目录,但这似乎不起作用,因为 Python 更改了调用时的工作目录。因此,如果我从 Project Directory
开始并执行 python Dir_2/runner.py
,我的实际工作目录将是 Project Directory/Dir_2
而不是项目目录。如果我 sys.path.append(os.getcwd())
我中断了一些标准库导入。我在这里错过了什么?
我尝试过的事情
通过附加 .或 .. 到进口的前面。这生成
__main__module does not exist or "You are attempting to access a directory above the root of this project".
项目的形状
- 项目目录
- 目录 1
- 目录 2
- runner.py
- 子目录 1
- 子目录 2
- 子目录 3
- 目录 3
不要 运行 子目录中的文件就好像它们是脚本一样。如果它是包结构的一部分,它是一个 模块 ,而不是一个脚本,所以 运行 它是一个:
python -m dir2.runner