为啥我不能在 Django 项目中导入模块?

Posted

技术标签:

【中文标题】为啥我不能在 Django 项目中导入模块?【英文标题】:Why can't I import modules in a Django project?为什么我不能在 Django 项目中导入模块? 【发布时间】:2015-11-28 11:16:44 【问题描述】:

我正在尝试使用一个旧的 Django 项目,我的近期目标是看看我可以在开发服务器上的计算机上运行什么。我明白了:

内殿 ~/pragmatometer $ python manage.py runserver 回溯(最近一次通话最后): 文件“manage.py”,第 10 行,在 execute_from_command_line(sys.argv) 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第 399 行,在 execute_from_command_line 实用程序.execute() 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第392行,在执行 self.fetch_command(子命令).run_from_argv(self.argv) 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第 261 行,在 fetch_command 命令 = get_commands() 文件“/Library/Python/2.7/site-packages/django/core/management/__init__.py”,第 107 行,在 get_commands 应用程序 = settings.INSTALLED_APPS 文件“/Library/Python/2.7/site-packages/django/conf/__init__.py”,第 54 行,在 __getattr__ self._setup(名称) _setup 中的文件“/Library/Python/2.7/site-packages/django/conf/__init__.py”,第 49 行 self._wrapped = 设置(settings_module) 文件“/Library/Python/2.7/site-packages/django/conf/__init__.py”,第 132 行,在 __init__ % (self.SETTINGS_MODULE, e) ImportError:无法导入设置'pragmatometer.settings'(它在sys.path上吗?设置文件中是否存在导入错误?):没有名为pragmatometer.settings的模块

这是一些命令行输出:

内殿 ~/pragmatometer $ /bin/pwd /用户/乔纳森/实用表 内殿 ~/pragmatometer $ echo $PYTHONPATH /用户/乔纳森 内殿 ~/pragmatometer $ python Python 2.7.10(默认,2015 年 7 月 14 日,19:46:27) [GCC 4.2.1 兼容 Apple LLVM 6.0 (clang-600.0.39)] 在 darwin 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 进口语用表 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError:没有名为 pragmatometer 的模块 >>> 导入 pragmatometer.settings 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError:没有名为 pragmatometer.settings 的模块 >>>

我应该做哪些我没有做的事情? (或者,因为它是一个旧项目,我应该从一个新项目开始吗?)

谢谢,

【问题讨论】:

pragmatometer 目录是否是一个包(是否有__init__.py 文件),里面是否有设置模块(是否有settings.py 文件)? ls *.py 输出:init.py manage.py settings.py views.py functions.py models.py urls.py 如果你尝试从~import pragmatometer.settings 【参考方案1】:

每个 django 项目都带有一个 settings.py 文件,django 将拒绝运行或加载模型,直到该 settings.py 文件被加载。

settings.py 文件需要在一个模块中,并且是您当前 PYTHONPATH 的一部分,并且 环境。变量 DJANGO_SETTINGS_MODULE 应该设置为它。

例如:

# assuming your file is under /myproject/mywebsite/settings.py
export PYTHONPATH=/myproject/
export DJANGO_SETTINGS_MODULE=mywebsite.settings

【讨论】:

【参考方案2】:

一个 Django 项目通常看起来像这样(我认为是 Django 1.4 及更高版本)。

myproject
    myproject
        __init__.py
        settings.py
    app1
    app2

您可以look around online 获取示例和变体。

请注意,在*** myproject 下有一个包含设置的 myproject 目录。

你的都是这样的吗?

或者您最初的目标是使用不同布局的旧版本 Django?

如果您尝试这样做:

PYTHONPATH=/Users/jonathan python
import pragmatometer

就像在您的第二个代码块中一样,它将/Users/jonathan 视为 Python 包并查找可能不存在的/Users/jonathan/__init__.py),因此它不会检查/Users/jonathan/pragmatometer/settings.py

【讨论】:

【参考方案3】:

我找到了罪魁祸首,或者至少是罪魁祸首。我已经(在我的 .bashrc 中)省略了“export”,现在我又遇到了另一个问题。

【讨论】:

以上是关于为啥我不能在 Django 项目中导入模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 项目中导入和显示 csv 文件

在 Django 中导入设置

为啥我不能在 react native 中导入我的自定义组件

为啥在html页面中导入js不能用,在本页又行,,急。。。

模块可以在控制台导入,但不能在脚本中导入

为啥 POD 文件无法在 Xcode 中导入目标项目头文件?