复杂的 Python 目录规范

2021-06-12 22:48:28 +08:00
 Grandmasters
想知道 Python 有没有具体的比较复杂的目录规范
Google 上大致翻了一下,基本都是比较简单的那种。
平时用的大概文件夹名大概有:
一级:bin,data,src
二级:api,db,lib,utils
三级:具体的模块

另外想问如果和前端(TypeScript)合作是否合适放在一个仓库内,怎么放比较合适。

高中生勿喷,感谢。
3477 次点击
所在节点    Python
12 条回复
ericls
2021-06-12 23:15:34 +08:00
放有什么优缺点? 不放有什么优缺点?
你的目的事什么 哪一种做法能更好满足你的目的?

我的前后端在一个 repo, 因为我的前后端不分人,部署也是一起部署的 也只用保证同一个 commit 的 前后端相互兼容。 如果分 repo overhead 将大大加大,而得不到别的好处。

不要管什么范例, pattern 什么的 这些都是答案
先看问题 再看答案

问题都没看清楚 抄答案也会抄错的
Pagliacii
2021-06-12 23:42:54 +08:00
Python 没有具体地说项目结构该怎么组织。你可以参考这个库 https://github.com/cookiecutter/cookiecutter
,找找模版,看看其他人是怎么组织项目结构的。
Austin2035
2021-06-12 23:48:07 +08:00
你看一下 requests 源码(典型的 pythonic ),没有多级目录,真正的源码就一级,何必搞那么多级?
hushao
2021-06-13 00:17:41 +08:00
Python 你就随心所欲的想怎么写就怎么写,随着项目复杂度提高,逐渐的抽象、剥离,既然采用 Python 了,固化的结果就是开局就提高了复杂度,降低了编码效率,反而不值得。
hushao
2021-06-13 00:18:58 +08:00
和前端可以放在一个大目录下,采用 submodule 方式
GeruzoniAnsasu
2021-06-13 02:03:31 +08:00
啥 高中生

哦那没有,django 怎么摆目录的照着往里填就得了



“复杂目录结构” 是上万个工作日才能累积出来的,你现阶段大概完全接触不到

p.s. 上万工作日的算法是 30 人核心小组 20 人外围 /组件开发从零到成熟化约一年左右的量
Trim21
2021-06-13 02:27:04 +08:00
如果是个 package 的话全都放在 package_name/ 里面,bin 用 entry_point
freakxx
2021-06-13 02:40:30 +08:00
可以借鉴 django 的做法,比较符合 python reusable 的一种设计思路;

到最后你的结构可能会变成
- config
- apps
- resource
- utils

这几个大结构,在这上面再延伸出去;
freakxx
2021-06-13 02:43:32 +08:00
> 另外想问如果和前端(TypeScript)合作是否合适放在一个仓库内,怎么放比较合适。


放在一起可以的,分支可以这么考虑,适当调整;
main - dev -test - frontend + backend - dev_<user>

代码的话,各自放在项目层
- frontend/
- backend/
- ReadME.md
no1xsyzy
2021-06-13 15:14:37 +08:00
poetry new 就行了,管那么多干嘛(
复杂了再切割就是了

和前端合作,两个人的话不建议放一个 branch,但可以放同一个仓库,建两个 orphan branch 然后 master 里塞两个 submodule,顺便还把版本 pin 住了(这样的话 commit history 会放三份?有点傻逼)
RockShake
2021-06-15 13:11:06 +08:00
前后端一起放在一个大目录下,我曾经碰到过一个跟 IDE 相关的问题。Frontend 文件夹内直接用 CLI 等工具自动生成项目模板,在 VS Code 中 ESlint 报错,无法编译通过,找不到对应的包。后来发现必须在根目录下用 CLI 工具生成前端项目,或者必须用 VS Code 单独打开 Frontend 文件夹才能避免该问题。
Rheinmetal
2021-06-21 08:29:04 +08:00
构建的有标准
pep 517 还是 518 来着
没搞过大项目是理解不了的

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

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

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

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

© 2021 V2EX