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

Python 从子目录或相对路径导入包,python,packages,Python,Packages,以下是我的目录设置: 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",

以下是我的目录设置:

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”,第1行,在
进口包装
有没有什么好方法可以让语法在
script1.py
中如此简单地工作?在过去的一个小时里,我一直在阅读关于
PYTHONPATH
sys.path
的文章,但我正在尝试为我的repo提供一些基本功能,我不敢相信每次我想运行脚本时都需要修改
PYTHONPATH

我错过了什么?将
pkg
导入
script1.py
的最佳方法是什么

您必须执行以下操作:

from shared import pkg

另外,您的
共享
目录应该有一个
\uuuu init\uuuu.py
文件

我在Python3.x中测试过,您可以-

import shared.pkg


如果您不想在
shared
中创建
\uuuu init\uuuuuuuuuuupy
文件并使用
import shared.pkg
,您可以通过执行以下操作来解决此问题:

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

import pkg

您使用的是哪一版本的python 2.7?3.x?@Anthon,我用的是3.x请告诉我们完整的错误。看起来好像少了几行;在Python2.xed中进行t测试就是为了反映这一点!谢谢@ssundarraj。这很有效。在
mydir
的另一个子目录中的
script3.py
中是否有这样做的方法?很乐意提供帮助。希望这能回答你的问题
from..shared import pkg
应该可以工作。@ssundarraj-hmm,这只是给了我
SystemError:父模块“”未加载,无法执行相对导入
如果我在这里遗漏了什么,我在python 3.4中尝试了类似的目录结构,在共享中没有
\u init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
shared.pkg
谢谢@ana,在共享文件夹中没有
\uuuu init\uuuuuuuuuuuuuuuuuuuuuupy
的情况下,它能工作吗?在我的测试中,它在共享文件夹中没有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。
import sys
sys.path.insert(0, 'shared')

import pkg