我正在将我的 Django 项目开发环境迁移到 Eclipse。
我让Python和Django在Eclipse中正常工作。但是,当我尝试添加外部库时,项目找不到它们。
以下是我添加所需模块的方式:
- 右键单击项目并选择"属性"
- 选择"外部库"选项卡
- 添加源文件夹(在我的虚拟环境中)或 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 中的路径。