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