Django 的 Eclipse 配置设置找不到外部库



我正在将我的 Django 项目开发环境迁移到 Eclipse。

我让Python和Django在Eclipse中正常工作。但是,当我尝试添加外部库时,项目找不到它们。

以下是我添加所需模块的方式:

  1. 右键单击项目并选择"属性"
  2. 选择"外部库"选项卡
  3. 添加源文件夹(在我的虚拟环境中)或 egg(也在那里)。

但是,在这两种情况下,当我执行此操作(对于消息模块)时,我在执行syncdb时都会收到此错误:错误:没有模块命名消息

我试过重新启动Eclipse,但仍然没有运气。

我是 django 的新手,所以这可能不是最佳实践,但它对我来说效果很好:

  • 你正在使用 PyDev 吗?如果是,您的外部库存储在 your_workspace/your_project/.pydevproject 文件中,如下所示:
<path>/usr/local/lib/python2.7/dist-packages/django_annoying-0.7.6-py2.7.egg</path>
  • 在我看来,此路径在开发时用于代码完成和检查类型等......但是当你运行你的项目时,它们必须在你的pythonpath中,而Eclipce不会自动将它们放到PATH中。

  • 为了确保 django 应用程序在 PATH 中,我在settings_local.py中添加了这样的东西:

# v                        PATHS SETTINGS                              v #
import os
import sys
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..')
# v                      3d-party django-apps                          v #
DJANGO_APPS_ROOT = os.path.join(PROJECT_ROOT, '..', '..', 'djaddons')
sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'south'))
sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'annoying'))
if CONF_APP_REGISTRATION_ENABLED:
    sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'registration'))
# v                        python libs                                 v #
PYTHON_LIBS_ROOT = os.path.join(PROJECT_ROOT, '..', '..', 'pylibs')
sys.path.insert(0, os.path.join(PYTHON_LIBS_ROOT, 'oauth2'))
sys.path.insert(0, os.path.join(PYTHON_LIBS_ROOT, 'httplib2'))
# ^                    END OF PATHS SETTINGS                           ^ #

(这是我 settings.py 的一部分,特定于环境,在开发计算机和服务器上有所不同)

  • 或者,您可以将 sys.path.insert 语句添加到服务器上的 .wsgi 文件(如果使用 mod_wsgi)和 manage.py 文件中,以便使用 manage.py 运行服务器进行测试

最常见的事情是你添加了错误的路径......将命令行中的内容与您通过运行在 Eclipse 中实际添加的路径进行比较:

import sys 
print('n'.join(sorted(sys.path)))

并修复 Eclipse 中的路径。

最新更新