繁体   English   中英

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

[英]importing a local package without modifying sys.path

这是我的目录设置:

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语法变得简单? 我目前在import pkg之前正在使用sys.path.insert(0, os.path.abspath('./shared')) (我是从mydir调用script1 ),但这并不能使其易于重复使用,而且很笨拙,修改sys.path通常可能是个坏主意。

我在这里想念什么? pkg放入script1.py的最佳方法是什么?

注意:我昨天问过这个问题 ,但是我没有意识到那里的答案对于上面的dir结构是行不通的,而这正是我真正需要的。 哎呀。

Python 3.x,顺便说一句。

尝试这个。

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

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

而且,据我所知,在这种情况下修改sys.path几乎是您必须要做的,因此不要为此感到难过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM