1. 程式人生 > >scrapy專案命令列執行報錯:No module named:***解決辦法

scrapy專案命令列執行報錯:No module named:***解決辦法

一般scrapy專案結構是這樣的:


要執行的檔案路徑:D:\py_workspace\my_scrapy_prjs\jianshu_spider\jianshu\spiders\jianshu_sp.py,在此目錄下開啟命令列執行

python jianshu_sp.py

報錯:No module named 'jianshu'。報錯原因:import語句如下:

from jianshu.items import ArticleItem

分析:cmd下執行python檔案時,當前sys的path變數

並沒有包含到該scrapy專案的根目錄,所以我們要把該scrapy專案的路徑加到sys.path中去。在import語句之前加入如下程式碼:

import sys
import os
fpath = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
ffpath = os.path.abspath(os.path.join(fpath,".."))
print(ffpath)
sys.path.append(ffpath)
from jianshu.items import ArticleItem

程式碼分析:cmd下執行該檔案時,先獲得該檔案的上級目錄fpath,再獲得上上級目錄ffpath,由於scrapy專案的目錄深度有2層,所以這裡取得上兩級的目錄路徑。

當然也可以把import語句改成這樣:

from jianshu.items import ArticleItem

相對的,上面一長串新增系統變數的的程式碼就可以精簡很多:

import sys
sys.path.append('..')

推薦這種方法,畢竟程式碼看起來簡介很多。接下來再執行這個'jianshu'這個py檔案,就不會報錯了。