[問題] Relative Import

看板Python作者 (wakaka)時間11年前 (2014/10/03 19:59), 11年前編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
目前我有個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

10/03 21:17, , 1F
Relative import 無法從 main 往外所以只能用 sys.path
10/03 21:17, 1F

10/03 21:18, , 2F
要嘛加 sys.path 要嘛就只能改結構, 哪個比較好就看需求
10/03 21:18, 2F

10/03 22:22, , 3F
了解 謝謝
10/03 22:22, 3F

10/04 00:50, , 4F
是不是用test runner 比較順手,用看看 PY.test
10/04 00:50, 4F

10/04 01:20, , 5F
是指unittest嗎?
10/04 01:20, 5F

10/04 08:07, , 6F

10/04 08:53, , 7F
ok, 感謝
10/04 08:53, 7F
文章代碼(AID): #1KBe-wl3 (Python)
文章代碼(AID): #1KBe-wl3 (Python)