导入本地程序包而不修改sys.path

时间:2015-06-24 17:07:25

标签: python package

这是我的目录设置:

mydir
├── folder
    └── subfolder
        └── 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
ImportError: No module named 'pkg'

有没有什么好方法可以让script1.py中的语法变得简单?我目前在sys.path.insert(0, os.path.abspath('./shared'))之前使用import pkg(我在script1打电话给mydir),但这并不适合重复使用,它很笨重,修改sys.path一般来说可能是一个坏主意。

我在这里缺少什么?将pkg加入script1.py的最佳方法是什么?

注意:昨天我问this,但我没有意识到那里的答案对上面的dir结构不起作用,这正是我真正需要的。糟糕。

Python 3.x,顺便说一下。

1 个答案:

答案 0 :(得分:0)

试试这个。

sys.path.append('./../../shared/')

严格限制:仅当您将其插入script1.py时才会有效,且仅当script1.py保留在mydir/folder/subfolder子目录中时才会有效。

此外,据我所知,修改sys.path几乎就是你在这种情况下必须做的事情,所以不要为此做坏事。