从子目录或相对路径导入包

importing a package from a subdir or relative path

这是我的目录设置:

mydir
├── script1.py
└── shared
    ├── otherstuff
    ├── script2.py
    └── pkg
        ├── box.py
        └── __init__.py

script2.py

开头
import pkg 

而且效果很好。当我在 script1.py 中包含同一行时,我得到:

Traceback (most recent call last):
  File "script1.py", line 1, in <module>
    import pkg

有没有什么好的方法可以让语法在 script1.py 中如此简单?在过去的一个小时里,我一直在阅读有关 PYTHONPATHsys.path 的内容,但我正在尝试为我的存储库提供一些基本功能,我不敢相信它需要修改 PYTHONPATH 每次我想 运行 一个脚本。

我在这里错过了什么?让 pkg 进入 script1.py 的最佳方法是什么?

你必须做的:

from shared import pkg

此外,您的 shared 目录应该有一个 __init__.py 文件

我在 python 3.x 测试过,你可以做 -

import shared.pkg

from shared import pkg

如果您不想在 shared 中创建 __init__.py 文件并使用 import shared.pkg,您可以通过以下方式解决此问题:

import sys
sys.path.insert(0, 'shared')

import pkg