Re: [問題] 請問為何os.getcwd()不總在sys.path內?

作者: clsmbstu   2018-06-22 11:34:24
抱歉,我一開始舉的例子似乎過於簡化且容易引起困惑,
我試著把狀況寫得更詳盡一點,但可能會稍長,請大家見諒。
先回覆ThxThx的問題:
→ ThxThx: 我蠻好奇,有什麼理由要把script和package放在一起嗎 06/18 19:46
→ ThxThx: 就連手動加進sys.path也是不好的手段 06/18 19:46
就一般來說,我還真不瞭解Python的import邏輯是什麼...
假如我有一個自己寫的package foo,裡面有個common.py,
另外有個專門放分析ipynb的資料夾bar,bar跟foo在同一層。
每次我都要先在分析的開頭寫sys.path.append(".."),
才能from foo.common import *。
我也覺得這樣寫好像很醜,
但是我又不能直接寫成from ..foo.common import *,
(ValueError: attempted relative import beyond top-level package)
我不懂為什麼會這樣,明明才往上一層,怎麼就beyond top-level了。
希望有人可以順便為我解惑。
作者: ThxThx (洗洗睡)   2017-06-18 19:46:00
我蠻好奇,有什麼理由要把script和package放在一起嗎就連手動加進sys.path也是不好的手段
作者: MAGICXX (逢甲阿法)   2018-06-22 11:56:00
呃 為什麼要from XX import *呢?直接import XX不就好了?你的情況就是 import foo.common 就好了不是?
作者: clsmbstu   2018-06-22 12:31:00
你是說我第一頁的例子嗎?import foo.common的話,呼叫裡面的函數不方便例如我得要:foo.common.do_a_thing()但是 from foo.common import * 的話要做某個分析或常用轉換我只要:do_a_thing() 就可以了的確你說的方式也可以 但我相信跟我最大的問題無關因為事實上我也不能 import ..foo.commonSyntaxError: invalid syntax
作者: ThxThx (洗洗睡)   2018-06-22 16:02:00
我開一篇回你

Links booklink

Contact Us: admin [ a t ] ucptt.com