错误代码提示:
`(base) (venv) PS D:\pythonProject\mynameshao> python manage.py startapp mynameshao
CommandError: 'mynameshao' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.`
找了很多网上的文章,有说更新pip, 有说确认python模块的,有重新布置虚拟环境的,各种方案搞了一上午,最后看到有一位网友直接给了代码解决方案,但没说明原因。本人是菜鸟,根据提供的网址,查看英文网站内容,终于找到了原因。但这个问题根源在于《python编程 从入门到实践》一书的基本教材中没有讲得太清楚,入坑人数不少,包括外国的学习者。这本书作者:Eric Matthes,感觉有必要拿出来分享一下,以节约后来者的学习时间。
过程说明:
激活虚拟环境-创建项目-创建数据库-创建应用程序(app)
代码如下:(terminal中运行)
(base) PS D:\pythonProject\venv> cd Scripts
(base) PS D:\pythonProject\venv\Scripts> .\activate
(base) (venv) PS D:\pythonProject\venv\Scripts> cd..
(base) (venv) PS D:\pythonProject\venv> cd..
(base) (venv) PS D:\pythonProject> django-admin startproject mynameshao
(base) (venv) PS D:\pythonProject> cd mynameshao
在创建app时遇到问题了:
(base) (venv) PS D:\pythonProject\mynameshao> python manage.py startapp mynameshao
CommandError: 'mynameshao' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.
提示建立的app名与现存的python模块名有冲突,重新将django项目名称改了好几次,都报同样的错误,查找pip list也找不到重名的模块。
网友 weixin_34232744 的解决方案,可以解决问题:
# 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
可能本人使用的是pycharm的原因,django-admin.py无法运行,另外就是教材中一度强调在最后的app名后要加,这些都是在绕弯路, 最终代码如下:
(base) (venv) PS D:\pythonProject\mynameshao> python manage.py startapp role1
(base) (venv) PS D:\pythonProject\mynameshao> ls
目录: D:\pythonProject\mynameshao
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/1/14 11:14 mynameshao
d----- 2023/1/14 11:27 role1
-a---- 2023/1/14 11:14 131072 db.sqlite3
-a---- 2023/1/14 11:14 688 manage.py
(base) (venv) PS D:\pythonProject\mynameshao>
检查项目文件夹OK,app文件目录中终于有了models.py文件。
但对于一个菜鸟,还是没有搞清楚原因,继续按网友提供的网址找资料:
https://stackoverflow.com/questions/7019070/cannot-start-any-django-app
看到回复如下:
外国兄弟笑了,项目文件名是一个总文件夹(容器),app需要另外取名字,但是教材上的app名字与项目文件名是相同的名字,导致大家误以为app就是项目名称名。
过程曲折,这就是自学过程中的痛苦,希望对后来人有帮助。