記錄一次爬蟲部署問題-主要爬取別的系統的數據來支撐我們的數據大屏

寫在前面

由於前同事留下的一個爬蟲項目,爬蟲主要爬取別的系統的數據來支撐我們的數據大屏。同事留下的是在本地算是基本開發完畢的爬蟲項目。我需要做的就是將項目部署上線在服務器上就可以了。但是因爲我也剛更新設備,就記錄一下我的整個流程。

代碼是python3的寫的,但是Mac OSX系統自帶的是python2版本的。所以就想着就使用雙Python版本就可以啦。

一.安裝Python3

  1. 前置:安裝好Homebrew【大概是Mac的包管理工具】
    常用操作:
    brew -v
    brew -h
    brew list
    brew search <包>
    brew install <包>
    brew uninstall <包>
    brew upgrade 軟件名 更新具體軟件名,例:brew upgrade git
    brew update 用於更新所有軟件
通過 update 可以把包信息更新到最新,不過包更新是通過git命令,所以要先通過 brew install git 命令安裝git

查看軟件信息:brew info 軟件名

  1. 安裝Python3

brew install python

使用brew 來安裝python會自動把pip裝上,上面安裝的是pip3(python3.x的包管理工具)。
查看版本:

python -V
pip3 -V

通過brew info python 可以知道:

If you need Homebrew's Python 2.7 run
  		brew install python@2
  1. 安裝Python2

    brew install python@2

這個時候會安裝python2和pip2
查看版本:
python -V
pip2 -V

  1. 說明
    到這裏環境中已經有了2和3版本的pyhton了,但是在使用python -V的時候,還是python2的版本,有的小夥伴可能想要修改默認的版本爲python3,可以看看這篇文章

二.安裝virtualenv 和 virtualenvwrapper

virtualenv是python的虛擬環境,能夠和系統環境相隔離,保持環境的純淨;
virtualenvwrapper可以方便的管理虛擬環境。

由於項目代碼是pyhton3 的我這裏就使用pip3
安裝:

pip3 install virtualenv
sudo easy_install virtualenvwrapper

接下來,設置虛擬環境的存儲位置

編輯系統環境變量

vim ~/.bash_profile 
#WORKON_HOME 創建虛擬環境所在的目錄
export WORKON_HOME=<你想要的位置>
:wq

source ~/.bash_profile 
source /usr/local/bin/virtualenvwrapper.sh

virtualenvwrapper的使用

在執行之前可能得
source /usr/local/bin/virtualenvwrapper.sh

創建虛擬環境python3
mkvirtualenv --python=/usr/local/bin/python3 env3

創建虛擬環境Python2
mkvirtualenv --python=/usr/local/bin/python env2

列出虛擬環境
lsvirtualenv -b

切換虛擬環境
workon env2

查看環境裏安裝了哪些包,進去環境才行
lssitepackages

退出虛擬環境
deactivate

刪除虛擬環境
rmvirtualenv env2

在虛擬環境中import所需的包,workon進到某個環境
pip3 install scrapy
pip2 install scrapy

三. 項目部署

根據上面的操作,我已經把項目所需要的環境和依賴包安裝好了,並使用pycharm把項目代碼在本地調試通過,沒有問題了。準備上線。

服務器上的環境安裝我就不說了,直接說部署過程中的問題

問題1:有一個lxrd 依賴線上環境沒有這個,我就只有先下載再上傳
http://www.lfd.uci.edu/~gohlke/pythonlibs/
pip install 下載的xxx

問題2:在linux中運行python文件時 會遇到導包錯誤的情況
ModuleNotFoundError: No module named 'xxx’
由於不在pycharm中 所以這裏不能將上一級目錄加入 sources root

解決方法:導入 項目根目錄 到sys 系統路徑中

import os
import sys
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

上面代碼放在from a import b 之前就可以啦。

其餘就沒有什麼大的問題了。

接下來,就是寫了一個簡單的定時任務,每天凌晨一點執行一次

0 1 * * * sh /home/liuge36/pachong/sbin/executespider.sh

後面再把這個任務放置到azkaban中去吧

這樣,整個部署就結束了。主要是想記錄一下自己遇到的問題,希望對你也有幫助,哈哈哈~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章