关于 Python 项目结构的问题,你们的 utils.py log.py 都是怎么放的?

2017-03-07 11:42:26 +08:00
 whx20202

比如

main.py

human/
    white_people.py
	black_people.py
    
animals/
    cat.py
    dog.py
    
log.py
utils.py

如果 human 里的文件和 animals 里面的文件都想用 utils.py 或者 log.py,那就得向上级引用,有人说是设计不合理

各位怎么处理这个问题的

3870 次点击
所在节点    Python
9 条回复
qianlv
2017-03-07 12:35:33 +08:00
qianlv
2017-03-07 12:36:16 +08:00
看错....
rogerchen
2017-03-07 12:46:39 +08:00
@qianlv
你说得没错,就是要弄成 package ,这样 submodule 之间就能互相引用了。

细则参考
https://docs.python.org/2/tutorial/modules.html#intra-package-references
PythonAnswer
2017-03-07 12:49:50 +08:00
absolute import

```python
# dog.py
from package.log import Logger
from package.utils import clean_dog_shit
zjuhwc
2017-03-07 12:51:19 +08:00
不要用相对路径,不然之后调整结构很麻烦,统一从项目根目录开始 import ,然后开发的时候把项目根目录加到 python 模块搜索路径
rogerchen
2017-03-07 12:52:19 +08:00
忘了说了, py2 还得
from __future__ import absolute_import

决策背景和最佳实践参见 PEP 328
https://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports
izoabr
2017-03-07 12:58:00 +08:00
自己建了一个 libs 库
billgreen1
2017-03-07 18:45:33 +08:00
试试 cockiecutter
lgpqdwjh
2017-03-07 18:47:35 +08:00
aimee/
├── __init__.py
├── app.py
├── common -- log
├── config.py
├── handlers
├── model
├── static
└── templates

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

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

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

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

© 2021 V2EX