python 怎么引入上上级目录的文件啊?

2015-01-19 23:09:47 +08:00
 haython
├── jd
│   ├── __init__.py
│   ├── api
│   │   ├── __init__.py
│   │   ├── aa.py
│   │   └── rest
│   │   ├── __init__.py
│   │   └── bb.py
│   └── base.py

不在bb里添加sys.path,怎么从bb里引入base里边的东西?
50580 次点击
所在节点    Python
32 条回复
DeanThompson
2015-01-19 23:52:00 +08:00
把 jd 这个目录的绝对路径添加到 PYTHONPATH,然后可以 import base 或 from base import xx
binux
2015-01-19 23:57:45 +08:00
import jd.base

如果你是从 jd 的目录启动的,然后 bb 又要引用 base,那就是设计错误
9hills
2015-01-20 00:28:43 +08:00
from ..base import xx,用相对引用就好了。。
regex
2015-01-20 00:50:08 +08:00
sys.path.append(path)
regex
2015-01-20 00:50:53 +08:00
。。 没看完要求
RIcter
2015-01-20 09:10:14 +08:00
@binux 菊苣…目录结构设计有没有具体的最佳实践喵OAQ
dingyaguang117
2015-01-20 09:17:33 +08:00
应该从根目录启动
haoawesome
2015-01-20 09:39:19 +08:00
可以用path这个包,虽然这不是一种推荐的做法

``` python
import path, sys
import folder = path.path(__file__).abspath()
sys.path.append(folder.parent.parent)
```
haoawesome
2015-01-20 09:40:56 +08:00
import path, sys
folder = path.path(__file__).abspath()
sys.path.append(folder.parent.parent)

BTW,发出的帖子不能修改啊?
Zuckonit
2015-01-20 09:43:20 +08:00
结构不合理
1989922yan
2015-01-20 09:46:57 +08:00
@9hills 这个正解。
binux
2015-01-20 09:49:24 +08:00
haython
2015-01-20 11:51:09 +08:00
@9hills 上上级目录
haython
2015-01-20 11:52:46 +08:00
@binux 是从另外一个目录引用的jd包并且在那里启动,是可以运行的,但是pycharm没有提示。。。
rikeinei
2015-01-20 12:16:51 +08:00
from ... import base
haython
2015-01-20 12:28:23 +08:00
@rikeinei 你确定这个可以用么。。。。
rikeinei
2015-01-20 15:26:57 +08:00
@haython
我写flask的时候,一直这么弄的
rikeinei
2015-01-20 15:29:08 +08:00
@haython
要么from ... import base
要么from ...base import XXX,反正python使用相对路径的时候基本就这么弄
9hills
2015-01-20 16:14:44 +08:00
@haython 只要你要导入的那级是个package(有__init__.py),就可以无限 .....
from .. import base ,上级目录
from ... import base,上上级目录
....以此类推
1989922yan
2015-01-20 16:23:25 +08:00
@9hills
Orz,还是正解。
虽然我看着蛋痛。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/163653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX