自定义python包中的导入错误

时间:2017-03-13 08:02:49

标签: python scrapy

在重新组织scrapy项目时,我想从我的 input[type=submit] { width: 60%; background-color: #4CAF50; color: white; padding: 14px 20px; margin: 8px 0; border: none; border-radius: 4px; cursor: pointer; } input[type=submit]:hover { background-color: #45a049; } div { border-radius: 5px; background-color: #f2f2f2; padding: 20px; } </style> <body> <h3>Using CSS to style an HTML Form</h3> <div> <form action="/action_page.php"> <label for="fname">First Name</label><br> <input type="text" id="fname" name="firstname" placeholder="Your name.."><br> <label for="lname">Last Name</label><br> <input type="text" id="lname" name="lastname" placeholder="Your last name.."> <br> <label for="country">Country</label><br> <select id="country" name="country"> <option value="australia">Australia</option> <option value="canada">Canada</option> <option value="usa">USA</option> </select> <input type="submit" value="Submit"> </form> </div> </body> </html> 文件创建一个包。

我想改变这个......

pipelines.py

到此......

├── my_scraper
│   ├── __init__.py
│   ├── items.py
│   ├── pipelines.py
│   ├── settings.py
│   └── spiders
└── scrapy.cfg

但在导入├── my_scraper │   ├── __init__.py │   ├── items.py │   ├── pipelines │   │   ├── __init__.py │   │   ├── MyPipeline1.py │   │   ├── MyPipeline2.py │   │   └── MyPipeline3.py │   ├── settings.py │   └── spiders └── scrapy.cfg

中的每个管道类之后
pipelines/__init__.py

in并引用from my_pipeline1 import MyPipeline1 from my_pipeline2 import MyPipeline2 from my_pipeline3 import MyPipeline3

中的每一个
settings.py

现在,当我运行ITEM_PIPELINES = { 'my_scraper.pipelines.MyPipeline1': 100, 'my_scraper.pipelines.MyPipeline2': 200, 'my_scraper.pipelines.MyPipeline3': 300, } 时,我收到了错误...

scrapy crawl my_scraper

为了使我的代码长期可维护,我不确定如何处理此问题。任何提示/帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

  

但是在管道/ init .py

中导入每个管道类之后
from my_pipeline1 import MyPipeline1
from my_pipeline2 import MyPipeline2
from my_pipeline3 import MyPipeline3

看看你的项目树,看起来上面的内容似乎完全没必要,事实上你甚至没有任何名为my_pipeline1的内容。

所以只需在pipelines/__init__.py中删除这些行 您可以在包中嵌套并拥有多个包。在这种情况下,您有my_spider个包,其中包含spiderspipelines个包,因此您可以安全地导入它们:

from myspider.pipelines.pipelines1 import SomeClass
# or in settings as
ITEM_PIPELINES = {
    'myspider.pipelines.pipelines1.MyPipeline': 100,
}