1
DeanThompson 2015-01-19 23:52:00 +08:00 2
把 jd 这个目录的绝对路径添加到 PYTHONPATH,然后可以 import base 或 from base import xx
|
2
binux 2015-01-19 23:57:45 +08:00 1
import jd.base
如果你是从 jd 的目录启动的,然后 bb 又要引用 base,那就是设计错误 |
3
9hills 2015-01-20 00:28:43 +08:00 1
from ..base import xx,用相对引用就好了。。
|
4
regex 2015-01-20 00:50:08 +08:00 1
sys.path.append(path)
|
5
regex 2015-01-20 00:50:53 +08:00 1
。。 没看完要求
|
7
dingyaguang117 2015-01-20 09:17:33 +08:00 via iPhone 1
应该从根目录启动
|
8
haoawesome 2015-01-20 09:39:19 +08:00 1
可以用path这个包,虽然这不是一种推荐的做法
``` python import path, sys import folder = path.path(__file__).abspath() sys.path.append(folder.parent.parent) ``` |
9
haoawesome 2015-01-20 09:40:56 +08:00 1
import path, sys
folder = path.path(__file__).abspath() sys.path.append(folder.parent.parent) BTW,发出的帖子不能修改啊? |
10
Zuckonit 2015-01-20 09:43:20 +08:00 1
结构不合理
|
11
1989922yan 2015-01-20 09:46:57 +08:00 1
@9hills 这个正解。
|
12
binux 2015-01-20 09:49:24 +08:00 1
|
15
rikeinei 2015-01-20 12:16:51 +08:00 1
from ... import base
|
18
rikeinei 2015-01-20 15:29:08 +08:00 1
|
19
9hills 2015-01-20 16:14:44 +08:00 1
@haython 只要你要导入的那级是个package(有__init__.py),就可以无限 .....
from .. import base ,上级目录 from ... import base,上上级目录 ....以此类推 |
20
1989922yan 2015-01-20 16:23:25 +08:00 1
|
21
9hills 2015-01-20 16:24:39 +08:00 1
|
22
1989922yan 2015-01-22 09:54:34 +08:00 1
@9hills
其实,整个问题回答中, 1. 都没有使用 __init__.py,这个文件。 2. 提问者没有指明入口函数。 A: 1. 如果使用__init__.py文件,其中添加自己包的模块: import mymodule0 import mymodule1 这样做,其他模块,就可以 import my包中的模块了,不再需要考虑 相对引用的问题。 2. 提问者如果指明了入口函数,那么在入口函数中, 首先应该import 跟入口函数同级的模块, 例如:base模块,api模块 个人理解,我的项目结构: store_management ├── auth │ ├── __init__.py │ ├── errors.py │ ├── models.py │ ├── views.py ├── base │ ├── __init__.py │ ├── codes.py │ ├── errors.py │ ├── models.py │ ├── views.py ├── settings.py ├── start.py ├── static ├── url.py start.py 为入口函数。auth中,都会调用base包。 auth 和 base是同级,既然加了___init__.py,就把他们两个当做是 两个同级模块好了 |
23
9hills 2015-01-22 12:12:28 +08:00 1
@1989922yan 你这个项目结构本身就是不推荐的,整个store_management 应该做成一个package,然后把start移到外面去。。
|
24
9hills 2015-01-22 12:13:55 +08:00 1
|
25
1989922yan 2015-01-22 16:48:50 +08:00 1
@9hills
ok,我看看 |
26
1989922yan 2015-01-22 17:13:14 +08:00 1
@9hills
参考了一个flask 实践的框架结构,稍等我把我的框架结构调整一下 |-flasky |-app/ |-templates/ |-static/ |-main/ |-__init__.py |-errors.py |-forms.py |-views.py |-__init__.py |-email.py |-models.py |-tests/ |-__init__.py |-test*.py |-venv/ |-requirements.txt |-config.py |-manage.py |
27
1989922yan 2015-01-22 17:16:15 +08:00 1
|
28
9hills 2015-01-22 17:47:12 +08:00 1
|
29
Porunga 2016-09-02 01:12:55 +08:00
|
30
noinlj 2016-12-12 12:43:50 +08:00
导入上级目录
``` import sys sys.path.append('../') ``` |
31
lushiqin 2018-02-08 13:07:59 +08:00
@noinlj 添加不了啊 添加后的结果 sys.path 打印出来的结果是['D:\\pyworkspace\\stock', 'D:\\pyworkspace', 'C:\\WINDOWS\\SYSTEM32\\python27.zip', 'C:\\1tenglu\\Python27\\DLLs', 'C:\\1tenglu\\Python27\\lib', 'C:\\1tenglu\\Python27\\lib\\plat-win', 'C:\\1tenglu\\Python27\\lib\\lib-tk', 'C:\\1tenglu\\Python27', 'C:\\1tenglu\\Python27\\lib\\site-packages', '../']
|
32
XuAaron 2018-07-05 14:50:02 +08:00
1、sys.path 看一下项目的目录
2、如果引用的模块在本项目根目录下,可以使用 from dirname import module、import module 或者相对路径 import ..module 来引用(具体看实际情况) 3、如果引用的模块和本项目目录不一致(这种基本不会出现,但是试验的话肯定会出现这种情况),可以使用 sys.path.append(path)(此处的 path 是你要引用的模块的目录),然后就可以使用 import module 引用了 |