【问题标题】:Cannot start any django app无法启动任何 django 应用程序
【发布时间】:2011-08-10 23:15:08
【问题描述】:

我是 Django 的新手,每次我尝试运行 python panel/manage.py startapp %app%(面板是我的项目)它给了我错误:

Error: '%app%' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.

我做错了吗?

公司、联系人或统计信息肯定不是现有 Python 模块的名称吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    这很有趣 - 您的 项目 和您的 应用程序 需要有不同的名称。您可能创建了一个项目,然后尝试使用相同的名称启动应用程序。

    【讨论】:

      【解决方案2】:

      我也很困惑,直到我意识到 Django 项目是应用程序的容器;这个顺序让它更清晰一点:

      # first create a Project (container).
      django-admin.py startproject Project
      
      # create multiple apps
      cd Project
      python manage.py startapp polls
      python manage.py startapp hello
      ...
      

      【讨论】:

        【解决方案3】:

        也许你需要

        cd panel
        python manage.py startapp yourappname
        

        我不确定从项目上方的目录运行命令是否会正常工作。

        【讨论】:

        • 也许这样的东西可以在 Linux 中,但作者的错误告诉我们,Django 试图创建应用程序,但它与 Python 模块冲突。
        • 但是错误信息似乎不正确,所以我猜测其他看起来很奇怪的东西。
        • Python 路径(包括当前目录)中包含__init__.py 文件的任何目录都被视为模块。
        • 你们知道吗,我很抱歉我很困惑,因为它会重新加载应用程序的实例而不是创建它。
        • 这不应该是选择的答案。 CD到目录与python包冲突无关。
        【解决方案4】:

        我遇到了同样的问题,因为我在执行更改后试图“重新启动”我的应用程序,但 startapp 只用于一次创建新应用程序时间>。要查看更改,请使用 python manage.py migrate 将应用与 DB 同步,然后使用 python manage.py runserver 重新启动服务器。

        来自django-admindocs

        (manage.py does essentially the same thing as django-admin)

        startapp <app_label> [destination]

        django-admin startapp

        为 当前目录或给定目的地中的给定应用名称。

        默认情况下,创建的目录包含一个 models.py 文件和其他 应用程序模板文件。 (有关更多详细信息,请参阅源代码。)如果只有应用程序 给定名称,应用程序目录将在当前创建 工作目录。

        如果提供了可选的目的地,Django 将使用现有的 目录而不是创建一个新目录。您可以使用“.”来表示 当前工作目录。

        例如:

        django-admin startapp myapp /Users/jezdez/Code/myapp

        【讨论】:

          【解决方案5】:

          如果您使用相同的应用名称运行两次“startapp”,则会显示此消息。正如上面 OP 所指出的,它不会重新加载应用程序,而是创建一个。

          【讨论】:

          • 那么你如何解决它?我第一次在错误的目录中创建了应用程序。
          • 没有。我在项目级别而不是应用级别收到此消息。
          【解决方案6】:

          您应该在 Codes 中为您的项目和应用选择不同的名称:

          django-admin startproject **my_project** 
          
          python manage.py startapp **my_app**
          

          【讨论】:

            【解决方案7】:

            我猜你可能已经在面板目录中手动创建了应用程序的目录。命令'startapp'是自动创建一个应用程序。如果你已经有一个,它会失败。

            【讨论】:

              【解决方案8】:

              我重现了这个问题,但实际上有些东西没有按我的预期工作。 我想知道我们是否偶然发现了 Django 的错误,或者我不明白的限制。

              有一个名为“project”的项目和一个空文件夹 app/newapp …我试过了:

              python manage.py startapp newapp apps/newapp
              

              返回:

              CommandError: 'newapp' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.
              

              但是,如果我以任何其他路径为目标,其中最后一个文件夹的名称与我正在启动的应用程序的名称不同,那么它可以工作。

              所以我最终做了:

              python manage.py startapp newapp apps/main
              

              使用 Django 2.1.3。

              【讨论】:

              • 这是错误的原因,除非应用名称与项目名称相同。这应该是公认的答案,因为 OP 说所有应用程序名称都会返回错误。这是因为该应用程序被放置在同名文件夹中。
              【解决方案9】:

              如果您想创建一个包含新应用的空目录

              project-dir
                  └── blog
                      ├── __init__.py
                      ├── ...
                      ├── blog-ext #this empty dir that will contain the new app
                      └── views.py
              

              所以不要输入:

              python manage.py newapp blog/blog-ext
              

              应该是:

              django-admin startapp newapp blog/blog-ext
              

              【讨论】:

                【解决方案10】:

                试试经典的“mysite”或“myproject”。你可以随时删除它,如果它被接受,那么你所有的想法都会与 Python 模块冲突。

                编辑:我尝试了你所有的想法,对我来说没有错误。因此,如果您为 django 安装了支持库或模块,那么其中一些可以包含此类名称。

                【讨论】:

                  【解决方案11】:

                  这个错误是因为应用程序名称和项目名称之间的名称冲突。您为您的应用程序和项目提供了相同的名称。您的项目和应用程序需要不同的名称。如果您使用上述相同的名称会发生错误。

                  了解应用与项目的区别

                  项目与应用

                  项目和应用程序有什么区别?应用程序是做某事的 Web 应用程序——例如,Weblog 系统、公共记录数据库或简单的投票应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用可以在多个项目中。

                  首先创建项目。 然后创建应用程序。

                  注意:应用和项目的名称应该不同

                  先用projectname创建一个项目

                   django-admin.py startproject Projectname .
                  

                  然后使用 appname 创建应用程序。 (要创建您的应用,请确保您位于同一目录 manage.py 并输入此命令)

                  python manage.py  startapp Appname 
                  

                  【讨论】:

                  • 没有。我收到此错误,应用名称与项目名称完全分开。
                  【解决方案12】:

                  这就是我如何弄清楚我的疑问的过程。

                  首先,我在我的项目目录中创建了一个目录,并放置了 __init__.py、models.py、admin.py、apps.py 和 views.py。

                  然后我运行 python manage.py runserver 运行良好。

                  然后按照该页面上的建议,我使用了 startapp 命令。我收到了这个错误:

                  CommandError: 'ucportal' conflicts with the name of an existing Python 
                  module and cannot be used as an app name. Please try another name.
                  

                  之后我删除了那个目录并运行了同名的 startapp 命令,它运行良好。

                  所以'startapp'命令是自动创建一个应用程序。如果你已经有一个,它会失败。

                  @DAG 给出的答案对我有用。

                  【讨论】:

                    【解决方案13】:

                    您需要在使用命令之前创建目录。假设您想在 apps 文件夹中添加一个投票应用程序。

                    mkdir apps apps/polls
                    python manage.py startapp polls apps/polls
                    

                    【讨论】:

                      【解决方案14】:

                      我在尝试设置 Wagtail 项目时遇到了这个问题。

                      在创建应用程序之前,我已经创建并激活了一个具有相同名称的 virtualenv(使用 virtualenvwrapper):$APPNAME。然后当我运行wagtail start $APPNAME 时,Django 会在 $PYTHONPATH 中查找命名冲突,在此实例中指向 /Users/User/.virtualenvs。

                      这自然会导致冲突,因为 /Users/User/.virtualenvs/$APPNAME 已经存在。

                      【讨论】:

                        【解决方案15】:

                        这些答案都没有帮助我。最后,我最终创建了一个具有不同名称的应用程序,然后将目录重命名为我一直想要的应用程序名称。请注意,您还需要更改 apps.py 中的类名称以匹配您的应用名称。

                        【讨论】:

                          【解决方案16】:

                          只需使用此命令

                          用于创建 Django 项目

                          python -m django startproject name_of_django_Project
                          

                          用于创建 Django 应用程序

                          python -m django  startapp App_name
                          

                          【讨论】:

                            【解决方案17】:

                            我在使用 wagtail cms 时遇到了同样的问题。即使没有这样创建的应用程序,我也会收到此错误。当您需要在 site-packages 目录中创建具有相同名称的应用时,就会出现这种情况。

                            一旦出现此错误,需要检查以下目录,

                            C:\Users\{user}\AppData\Local\Programs\Python\Python38-32\Lib\site-packages

                            如果您要创建同名的包,则需要删除该包。 还要确保在删除之前检查包是否重要。

                            【讨论】:

                              猜你喜欢
                              • 2018-11-30
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2013-06-19
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多