【问题标题】:Django settings -- could not import unipathDjango 设置——无法导入 unipath
【发布时间】:2013-02-02 07:55:07
【问题描述】:

我无法弄清楚我做错了什么。请你帮助我好吗? 我有以下目录结构:

project-repository
  \-- my-project
       \--manage.py
       \--my-project
             \--__init__.py
             \--urls.py
             \--wsgi.py
             \--settings
                    \--__init__.py
                    \--local.py
                    \--base.py

local.py 中我导入base.py。在base.py 我有from unipath import Path。当我尝试运行 django-admin shell --settings=my-project.settings.local 时,它显示一个错误:

Error: Could not import settings 'my-project.settings.local' (Is it on sys.path?): No module named unipath

当我执行pip freeze 时,它会告诉我:

Unipath==0.2.1

我可以很容易地在 python 控制台中导入它。我在 PYTHONPATH 上还有 project-repositorymy-project

这里是unipath.__file__ 输出:

/home/User/.virtualenvs/django.1.4/local/lib/python2.7/site-packages/unipath/__init__.pyc

这是来自sys.path 输出的其中一行:

/home/User/.virtualenvs/django.1.4/local/lib/python2.7/site-packages

你能指出我做错了什么吗?

【问题讨论】:

    标签: python django settings


    【解决方案1】:

    看来我找到了问题所在。我的想法是我做了很多乱七八糟的事情。我在全球范围内安装了 django 和其他应用程序(早在我开始开发项目之前)。然后我安装了 virtualenvwrapper 并创建了 virtualenv。在 virtualenv 中工作,我安装了所需的依赖项和 django。但是当我试图运行它时,我运行了全局安装的 django 版本。结果出现了一些不兼容。 卸载全局包后,一切正常。

    我是怎么想出来的?非常感谢 Jeff Knup 和他的帖子Starting a Django 1.4 Project the Right Way。我走过了描述的步骤,当我跑的时候

    (my-virtualenv)$ which django-admin.py
    

    它向我展示了以下路径:

    /usr/local/bin/django-admin
    

    虽然它应该有:

    $HOME/.virtualenvs/
    

    这是有问题的迹象。

    非常感谢大家帮助我。

    【讨论】:

    • 不客气!很高兴你发现它有帮助。可以创建一个可以访问系统包的 virtualenv,但这不是默认设置。你还记得你在创建 virtualenv 时出错的地方,以便我可以在那篇文章中澄清吗?
    • 嗨,杰夫。再次感谢。我刚刚在全球范围内安装了几个软件包并忘记了它们。然后我创建了 vrtualenv 并在 virtualenv 中安装了类似的包。结果,当我尝试使用本地包时,实际上我使用了全局包,但我无法理解。所以这是我问题的主要来源。
    • 杰夫,如果您还可以阐明如何将 DJANGO_SETTINGS_MODULEPYTHONPATH 设置为 workon virtualenv 上的项目目录并在 deactivate 上删除它们,那将是一个很大的价值(我使用django-admin.py 而不是manage.py 就像在Two Scoopes of Django 中提出的那样
    【解决方案2】:

    将文件__init__.py添加到设置目录

    【讨论】:

    • 其实我做到了,但忘了在问题中指出它。感谢您注意到这一点
    • 你在哪里添加project-repositorymy-project到python路径?您应该将其添加到 wsgi.py 中,以便网络服务器执行脚本或添加到 manage.py 中以供 shell。
    • 我使用 virtualenv 将我的项目根添加到 PYTHONPATH。我尝试运行开发服务器,因此将其添加到wsgi.py 并不是重点。你认为它与我的项目 PYTHONPATH 有联系吗?事实上,当我在 base.py 中注释掉“from unipath import Path”这一行时,一切正常(我的意思是开发服务器和 django shell)。
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2014-05-19
    • 2014-02-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多