gpt4 book ai didi

python - Django 应用程序是否有保留/非法名称?导入/makemigrations 不能根据应用名称工作

转载 作者:行者123 更新时间:2023-12-04 08:01:23 24 4
gpt4 key购买 nike

我的 Django 项目有几个应用程序,除了名为 platform 的应用程序之外,它们都没有问题。 .要从此应用程序导入,我需要使用完整路径,而不是能够直接导入它,例如:

from app.models import MyModel # Doesn't work for platform app, but it does for others
对比
from project_root.app.models import Mymodel # Have to do this only for platform app
我从 platform 更改了名称至 theplatform它奏效了。导入工作没有完整路径,makemigrations 开始寻找模型。唯一改变的是应用程序的名称。
我的每个应用程序都有一个 apps.py , 类继承自 AppConfig带有应用程序的名称,并且所有这些都在已安装的应用程序中。我还确定添加/删除 初始化 .py 不会弄乱任何东西。我很确定这里唯一的变量是应用程序的名称。
Django 中是否有保留或非法的应用程序名称?如果有的话,我可以阅读它吗?我知道的唯一限制是名称中没有破折号。

最佳答案

platform [1] 是 python 中的内置模块,可能会出现在本地 platform 之前。导入路径上的模块。
您需要通过查看 sys.path 来检查您的导入路径。 ( import sys ) 可以肯定地说。通常 ''首先出现并且是您当前的工作目录,因此所有本地模块都会覆盖/隐藏系统模块。
您可以使用环境变量 PYTHONPATH 修改导入路径。或通过更改 sys.path使您的本地platform是第一个找到的,但我建议不要使用该名称。您将来使用的某些软件包可能会在 import platform 时获得系统模块。并且不会工作。
[1]:http://docs.python.org/3/library/platform.html )

关于python - Django 应用程序是否有保留/非法名称?导入/makemigrations 不能根据应用名称工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66448607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com