作者walelile (wakaka)
看板Python
标题[问题] Relative Import
时间Fri Oct 3 19:59:51 2014
目前我有个project结构如下
proj/
pkg/
moduleA.py
test/
test.py
我希望达到的目的是:
1. 在test.py可以import moduleA里面的class XXX
2. 可以直接执行test.py (e.g. $ python test.py)
根据PEP 328的说法
在test.py中加入 from ..moduleA import XXX
然後切换至proj这个目录下, 执行 $ python -m pkg.test.test
这样可以执行, 但是无法使用 $ python test.py
而在PEP 366, 看起来似乎修改 __package__ 搭配sys.path,
才能直接执行$ python test.py
我目前主要的疑惑是,既然都要改sys.path,似乎就不需要relative import ?
我在test.py里改成
sys.path.append("<path to proj>/pkg/")
from moduleA import XXX
这样就可以直接执行 $ python test.py
是否有其他比较妥善的做法?
谢谢指教
※ 编辑: walelile (1.171.166.210), 10/03/2014 20:20:05
1F:→ uranusjr: Relative import 无法从 main 往外所以只能用 sys.path 10/03 21:17
2F:→ uranusjr: 要嘛加 sys.path 要嘛就只能改结构, 哪个比较好就看需求 10/03 21:18
3F:→ walelile: 了解 谢谢 10/03 22:22
4F:推 timTan: 是不是用test runner 比较顺手,用看看 PY.test 10/04 00:50
5F:→ walelile: 是指unittest吗? 10/04 01:20
7F:→ walelile: ok, 感谢 10/04 08:53