我正在尝试djangoproject.com网站上的Django教程,但是当我到达第一个" makemigrations民意调查"我一直收到这个错误:
ImportError:没有名为apps的模块
Traceback (most recent call last): File "manage.py", line 22, in execute_from_command_line(sys.argv) File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 312, in execute django.setup() File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup apps.populate(settings.INSTALLED_APPS) File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 85, in populate app_config = AppConfig.create(entry) File "/Library/Python/2.7/site-packages/django/apps/config.py", line 112, in create mod = import_module(mod_path) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name)
如何解决此错误?
答案 0 :(得分:6)
您的问题是您的Django版本与教程版本不匹配。
在Django 1.9+中,startapp命令会自动创建一个app配置类,因此the tutorial会要求您将polls.apps.PollsConfig
添加到INSTALLED_APPS
。
对于Django 1.8及更早版本,the tutorial要求您将polls
添加到INSTALLED_APPS
。如果您添加polls.apps.PollsConfig
,则会收到导入错误,除非您手动创建PollsConfig
。
答案 1 :(得分:4)
教程中有错误。
它指示在 public partial class Exception1 : System.Web.UI.Page
{
protected DeviceDetails deviceDetails;
protected void Page_Load(object sender, EventArgs e)
{
deviceDetails = new DeviceDetails("Test", "My Test");
}
}
public class DeviceDetails
{
public string Name { get; set; }
public string FailureDetails { get; set; }
public DeviceDetails(string name, string description)
{
Name = name;
FailureDetails = description;
}
}
文件的polls.apps.PollsConfig
部分添加INSTALLED_APPS
。我将其从settings.py
更改为简单polls.apps.PollsConfig
,这就是诀窍。我能够成功地进行迁移。
我希望这有助于其他遇到类似问题的人。
答案 2 :(得分:4)
我有一个非常类似的问题,但肯定与OP 不同。也就是说,这篇文章是我在调试我的问题时发现的第一个回复之一,所以我在回答问题时劫持了它。
我正在构建的应用程序将应用程序嵌套在父命名空间下,例如customapp.polls
而非polls
。我看到的错误是
ModuleNotFoundError: No module named 'polls'
但如果您使用的是Python 3.5或更早版本,则可能如下所示:
ImportError: No module named polls
请注意,原始帖子中的polls
代替apps
。
customapp.polls.apps.PollsConfig
和customapp.polls.apps
缺失而不是apps
的错误,但这可能只是版本上的差异。PollsConfig
子类。正如@Alasdair所说,有效的原因通常是因为你没有添加AppConfig
子类。在我的情况下,错误抱怨polls
模块丢失(不是apps
)。自从@Monils answer"解决了#34;我的问题,我能够将其缩小到我的实际配置。我的配置看起来相当于:
class PollsConfig(AppConfig):
name = 'polls'
但,因为我将我的应用放在父模块下面,我应该写一下:
class PollsConfig(AppConfig):
name = 'customapp.polls'
答案 3 :(得分:1)
您需要在virtualenv中安装所需的软件包才能运行Django项目。首先,为您的项目创建virtualenv。
virtualenv env #For python 2.7
virtualenv -p python3 env #For python 3.4
Actiavte env安装您的要求。
source env/bin/activate
通过使用pip,您可以安装包。
pip install Django
然后启动你的Django项目。
答案 4 :(得分:0)
在Django 1.10.6中,我遇到了同样的错误(“没有名为......的模块”)。对我有用的解决方案是在"polls.apps.PollsConfig"
中更改"mysite.polls"
的{{1}}。 o.O
答案 5 :(得分:0)
我找到了解决方案。当您在polls.apps.PollsConfig
中编写InstalledApps
时,请记住,第一个polls
是指创建的应用程序,而不是网站。
在Django文档中,这可能会有些混乱。