Python 导入本地包而不修改sys.path
以下是我的目录设置:Python 导入本地包而不修改sys.path,python,package,Python,Package,以下是我的目录设置: mydir ├── folder └── subfolder └── script1.py └── shared ├── otherstuff ├── script2.py └── pkg ├── box.py └── __init__.py script2.py以 import pkg 而且效果很好。当我在script1.py中包含同一行时,我得到: Traceback (most re
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”,第1行,在
进口包装
ImportError:没有名为“pkg”的模块
有没有什么好方法可以让语法在script1.py
中如此简单地工作?我目前使用的是sys.path.insert(0,os.path.abspath('./shared'))
之前的import pkg
(我从mydir
调用script1
),但这不便于重复使用,而且很笨重,一般来说修改sys.path
可能是个坏主意
我错过了什么?将pkg
导入script1.py
的最佳方法是什么
注意:我昨天问过,但我没有意识到上面的答案对dir结构不起作用,这正是我真正需要的。哎呀
Python3.x,顺便说一句。试试这个
sys.path.append('./../../shared/')
严格限制:只有将其插入script1.py
中,并且script1.py
仍在mydir/文件夹/子文件夹中时,这才有效
另外,据我所知,在这种情况下,修改sys.path几乎是你必须做的事情,所以不要为此感到难过