\uuu init\uuuu.py中的单个文件名有助于Django项目的拆分设置管理@阅读docs.org

2024-05-18 07:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

https://github.com/rtfd/readthedocs.org/tree/master/readthedocs/settings

我从https://code.djangoproject.com/wiki/SplitSettings到达上面的链接。你知道吗

有人能解释一下这种特殊的配置是如何工作的吗? 尤其是settings/__init__.py所扮演的角色,只包含特定设置文件的名称(postgres.py公司在这种情况下)。 我试着对我的项目这样做,django抱怨没有找到合适的模块,那么readthedocs的工作情况如何呢?你知道吗


Tags: pyhttpsorggithubmastercomtreesettings
2条回答

事实上他们做的很糟糕。__init__py在本例中是到postres.py的符号链接。当您在github上打开它时,它只显示它所指向的文件,因为这就是symlinks在强制显示时的外观。这和自己创建一个文件并添加一行文件名是不一样的。你知道吗

然而,实际上提交符号链接并不好,因为它们并不适用于所有操作系统。另外,这里的重点是允许您在postgres或sqlite3设置之间切换,但是如果您删除__init__.py并创建一个新的sqlite.py符号链接,那么您实际上已经在那一点上更改了源代码(因为它是提交的),并且如果不恢复到原始的postgres.py符号链接,您将无法提取新的更改。你知道吗

但是,__init__.py必须存在,否则Python不会将其识别为模块。他们应该做的是:

# __init__.py

from local import *

然后,在local.py创建一个符号链接,指向他们想要使用的任何数据库设置文件。那么,这个文件没有提交,也没有问题。你知道吗

在本例中,settings/__init__.py不是有效的Python模块,因此它显然是settings/postgres.py的符号链接。你知道吗

wrt/__init__.py文件,它们是Python用来将文件夹视为Python包的标记(cfhttp://docs.python.org/tutorial/modules.html#packages)。这个__init__.py文件是在import mypackage时导入的,就像它是一个模块一样。你知道吗

相关问题 更多 >