【问题标题】:Scrapy django model import errorScrapy django模型导入错误
【发布时间】:2014-08-29 03:53:27
【问题描述】:

我一直在尝试使用 django 和 djangoitem 设置一个爬虫蜘蛛。当我尝试运行我的蜘蛛时,item.py 总是无法导入 django 应用程序的模型。

我建立了一个新的 django 站点并按照 https://stackoverflow.com/a/19073347/3988392 的说明进行操作,但我仍然无法从我的应用程序导入模型。我认为一切都按照该线程中的说明进行设置(除了我将事物称为 testsite 而不是 mysite 等。)但如果有人认为它可能有帮助,我会发布代码。

运行scrapy crawl example时的回溯:

Traceback (most recent call last):
  File "/usr/bin/scrapy", line 9, in <module>
    load_entry_point('Scrapy==0.24.4', 'console_scripts', 'scrapy')()
  File "/usr/lib/pymodules/python2.7/scrapy/cmdline.py", line 143, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/usr/lib/pymodules/python2.7/scrapy/cmdline.py", line 89, in _run_print_help
    func(*a, **kw)
  File "/usr/lib/pymodules/python2.7/scrapy/cmdline.py", line 150, in _run_command
    cmd.run(args, opts)
  File "/usr/lib/pymodules/python2.7/scrapy/commands/crawl.py", line 57, in run
    crawler = self.crawler_process.create_crawler()
  File "/usr/lib/pymodules/python2.7/scrapy/crawler.py", line 87, in create_crawler
    self.crawlers[name] = Crawler(self.settings)
  File "/usr/lib/pymodules/python2.7/scrapy/crawler.py", line 25, in __init__
    self.spiders = spman_cls.from_crawler(self)
  File "/usr/lib/pymodules/python2.7/scrapy/spidermanager.py", line 35, in from_crawler
    sm = cls.from_settings(crawler.settings)
  File "/usr/lib/pymodules/python2.7/scrapy/spidermanager.py", line 31, in from_settings
    return cls(settings.getlist('SPIDER_MODULES'))
  File "/usr/lib/pymodules/python2.7/scrapy/spidermanager.py", line 22, in __init__
    for module in walk_modules(name):
  File "/usr/lib/pymodules/python2.7/scrapy/utils/misc.py", line 68, in walk_modules
    submod = import_module(fullpath)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/myUserName/test-env/testbot/testbot/spiders/example.py", line 3, in <module>
    from testbot.items import UsefulModelItem
  File "/home/myUserName/test-env/testbot/testbot/items.py", line 11, in <module>
    from testapp.models import UsefulModel
ImportError: No module named testapp.models

文件树:

├── testbot
│   ├── scrapy.cfg
│   └── testbot
│       ├── __init__.py
│       ├── __init__.pyc
│       ├── items.py
│       ├── items.pyc
│       ├── pipelines.py
│       ├── settings.py
│       ├── settings.pyc
│       └── spiders
│           ├── example.py
│           ├── example.pyc
│           ├── __init__.py
│           └── __init__.pyc
└── testsite
    ├── manage.py
    ├── testapp
    │   ├── admin.py
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── models.py
    │   ├── models.pyc
    │   ├── tests.py
    │   └── views.py
    └── testsite
        ├── __init__.py
        ├── __init__.pyc
        ├── settings.py
        ├── settings.pyc
        ├── urls.py
        └── wsgi.py

【问题讨论】:

  • 尝试在testapp 目录中包含一个空的__init__.py 文件
  • 当我运行python manage.py startapp myapp 时,似乎创建了一个空的__init__.py,所以我认为这没有什么问题。
  • 你的models.py在哪里?是在myapp文件夹下还是testapp文件夹下?
  • 添加了文件树。 models.py 正在 testapp 中(Rho 教程中的 myapp)

标签: python django django-models scrapy importerror


【解决方案1】:

我认为您想念将 pythonpath 写入您的 django 项目。 您添加的是应用程序,而不是项目。

在 testbot/settings.py 中添加:

# Setting up django's project full path.
import sys
sys.path.insert(0, '/home/TristanTrim/PycharmProjects/testsite')

# Setting up django's settings module name.
# This module is located at /home/rolando/projects/myweb/myweb/settings.py.
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'testsite.settings'

【讨论】:

    【解决方案2】:
    import sys
    import os
    

    # 设置django的项目全路径。

    sys.path.append('/home/testsite')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'testsite.settings'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2015-10-08
      • 2020-04-23
      • 2015-10-10
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多