1. 程式人生 > >Orangepi 香橙派 安裝 Debian 系統 並且 安裝 wxpy (微信機器人) 入坑記錄

Orangepi 香橙派 安裝 Debian 系統 並且 安裝 wxpy (微信機器人) 入坑記錄

硬體準備:Orangepi-PC 香橙派 (早期的型號,1G RAM ,資源還是很豐富的)

軟體準備:Debian_jessie_mini.img (來自官網的系統),SecureCRT

一、安裝Debian

剛買下Orangepi的時候,我安裝的是Kali,但是感覺這個系統附帶的軟體太多了,有些臃腫。後來玩了一陣子ArchLinux,感覺還可以,但是附帶的軟體也太少了,連GCC也沒有,簡直就是兩個極端。前段時間看到 wxpy 挺有意思的,現在微信這麼火,安裝QQ的人都少了,用微信做一些應用還是比較方便的,然後我就按照wxpy官方的安裝流程開始操作。但是沒想到,在ArchLinux上安裝被坑慘了,折騰了好幾天,安裝wxpy以後要訪問微信的web端必須使用SSL,ArchLinux自帶的OpenSSL版本太低,更新以後又提示若干庫檔案版本不對,pacman 也不能用了。重燒系統,乾脆升級整個系統,升級了184個程式,最後折騰折騰,總算是能用wxpy了,但是隻要重啟,系統就起不來了,回想一下,更新的時候更新了linux-firmware,估計是這個導致的,算了,不折騰了,換系統。

官方的Debian_jessie_mini.img體積也比較小,拿來試試。先用SDFormatter格式化TF卡,“選項設定”裡選擇“邏輯大小調整”為“開啟(ON)”

然後使用Win32DiskImager寫入映象檔案。寫入完成後,可以看到TF卡能被windows識別的分割槽只有64M,裡面有很多檔案,只保留uImage和script.bin.OPI-PCxxxxx,如果你的Orangepi不接顯示器,無所謂哪個script.bin.OPI-PCxxxxx,留一個就行,並去除.OPI-PCxxxxx,改名為script.bin。最後將TF卡插到Orangepi裡,插好網線上電開機。

系統起來後,用SecureCRT遠端連線Orangepi。首先,按照系統提示使用fs_resize對分割槽大小進行擴充套件,隨後輸入reboot重啟

****************************************
WARNING: TO RESIZE FILESYSTEM RUN:
sudo fs_resize
to remove this message run:
sudo rm /usr/local/bin/fs_resize_warning
****************************************
[email protected]:~# fs_resize

Disk /dev/mmcblk0: 7.6 GiB, 8120172544 bytes, 15859712 sectors
/dev/mmcblk0p1       40960  172031  131072   64M  b W95 FAT32
/dev/mmcblk0p2      172032 1656832 1484801  725M 83 Linux

  Max block: 15858688
   Part end: 1656832
 Part start: 172032

WARNING: Do you want to resize "/dev/mmcblk0p2" (y/N)?  y
PARTITION RESIZED.
*********************************************
Rootfs Extended. Please REBOOT to take effect
*********************************************

[email protected]
:~#

接下來,我們修改一下源,改成國內源,下載速度快點。Debian官網顯示中國大陸的源有兩個,實際上一個是清華大學的伺服器,另一個是中國科學技術大學的伺服器,隨便選一個。將/etc/apt/sources.list修改如下(我選擇了清華的源)

deb http://ftp2.cn.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp2.cn.debian.org/debian/ jessie main contrib non-free

deb http://ftp2.cn.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp2.cn.debian.org/debian/ jessie-updates main contrib non-free

deb http://ftp2.cn.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp2.cn.debian.org/debian/ jessie-backports main contrib non-free

使用 apt-get update 更新源

[email protected]:~# apt-get update
Ign http://ftp2.cn.debian.org jessie InRelease    
Get:2 http://ftp2.cn.debian.org jessie-backports InRelease [166 kB]
Get:3 http://ftp2.cn.debian.org jessie Release.gpg [2,420 B]
。。。。。。             
Get:30 http://ftp2.cn.debian.org jessie-backports/contrib armhf Packages [7,980 B]           
Get:31 http://ftp2.cn.debian.org jessie-backports/non-free armhf Packages [6,692 B]          
Fetched 21.6 MB in 35s (606 kB/s)                                                            
Reading package lists... Done
[email protected]:~# 

這裡說一下apt-get update與apt-get upgrade區別。update 是更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,這樣才能獲取到最新的軟體包。upgrade 是升級已安裝的所有軟體包,升級之後的版本就是本地地址裡的。因此,在執行 upgrade 之前一定要執行 update,這樣才能更新到最新的。

二、安裝wxpy

好啦,我們接下來安裝wxpy。先來看看有沒有python。

[email protected]:~# python -V
Python 2.7.9
[email protected]:~# 

python 2.7.9 版本的,看看有沒有更新的版本

[email protected]:~# apt-get install python
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python is already the newest version.
python set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 112 not upgraded.
[email protected]:~# 

就這的湊合用吧,當然,可以使用 apt-get install python3 安裝python3版本的。

下面,安裝wxpy,根據官網建議,使用國內源

pip install -U wxpy -i "https://pypi.doubanio.com/simple/"

啊哦,提示pip命令找不到

[email protected]:~# pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
-bash: pip: command not found
[email protected]:~# 

安裝pip

[email protected]:~# apt-get install python-pip

稍等片刻,顯示安裝完畢,還安裝了一大堆關聯軟體。再來安裝wxpy,好了,安裝完成。由於我們是使用遠端終端操作Orangepi,為了可以在終端裡顯示登入微信的二維碼,必須安裝 pillow

[email protected]:~# pip install pillow 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
    ['__name__'])
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 25, in <module>
    from requests.compat import IncompleteRead
ImportError: cannot import name IncompleteRead
[email protected]:~# 

又報錯了,看看是什麼問題。stackoverflow.com 上的一個帖子給出瞭如下解釋。

This problem is caused by a mismatch between your pip installation and your requests installation.

As of requests version 2.4.0 requests.compat.IncompleteRead has been removed. Older versions of pip, e.g. from July 2014, still relied on IncompleteRead. In the current version of pip, the import of IncompleteRead has been removed.

So the one to blame is either:

requests, for removing public API too quickly
Ubuntu for updating pip too slowly
You can solve this issue, by either updating pip via Ubuntu (if there is a newer version) or by installing pip aside from Ubuntu.

 好吧,先來解除安裝pip

apt-get remove python-pip

然後再裝一次pip

easy_install pip

安裝完成後,easy_install 提示pip安裝到了/usr/local/bin 裡,重啟一下Orangepi,輸入 pip -V 檢視版本,可以看到,明顯比直接從Debian獲得的pip版本高

[email protected]:~# pip -V
pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip-18.1-py2.7.egg/pip (python 2.7)

再來安裝 pillow,還是輸入 pip install pillow

[email protected]:~# pip install pillow
Collecting pillow
  Downloading https://files.pythonhosted.org/packages/1b/e1/1118d60e9946e4e77872b69c58bc2f28448ec02c99a2ce456cd1a272c5fd/Pillow-5.3.0.tar.gz (15.6MB)
    100% |████████████████████████████████| 15.6MB 88kB/s 
Building wheels for collected packages: pillow
。。。。。。
    The headers or library files could not be found for zlib,
    a required dependency when compiling Pillow from source.
    
    Please see the install instructions at:
       https://pillow.readthedocs.io/en/latest/installation.html
    
    
    
    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-lD3XA3/pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-Zvfmtx/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-lD3XA3/pillow/
[email protected]:~# 

好吧,繼續填坑。The headers or library files could not be found for zlib  看來是沒有找到zlib這個庫,那就安裝它

[email protected]:~# apt-get install zlib1g-dev

再試一次,pip install pillow 。嗯,這回變成 The headers or library files could not be found for jpeg 了,補齊它

[email protected]:~# apt-get install libjpeg-dev

繼續,pip install pillow 。這次牛逼了,提示 "error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1“,WTF!!

填坑。。。

在linux中開發python時,會遇到該問題,指的是gcc未找到<Python.h>標頭檔案,需要安裝支援庫。

[email protected]:~# apt-get install python-dev libevent-dev

看看還有坑沒

[email protected]:~# pip install pillow                                                           
Collecting pillow
  Using cached https://files.pythonhosted.org/packages/1b/e1/1118d60e9946e4e77872b69c58bc2f28448ec02c99a2ce456cd1a272c5fd/Pillow-5.3.0.tar.gz
Building wheels for collected packages: pillow
  Running setup.py bdist_wheel for pillow ... done
  Stored in directory: /root/.cache/pip/wheels/df/81/28/47e761b5e307472ba7c2c5ced6e52037bbefe33c9c4b2a627e
Successfully built pillow
Installing collected packages: pillow
Successfully installed pillow-5.3.0
[email protected]:~# 

不錯,終於安裝成功了。下面寫個簡單的python試試看,就直接抄wxpy官方示例即可。

from wxpy import *
bot = Bot(console_qr=True)

# 機器人賬號自身
myself = bot.self

# 向檔案傳輸助手傳送訊息
bot.file_helper.send('Hello from wxpy!')

因為是使用終端操作的,需要新增引數 console_qr=True 。執行一下看看

[email protected]:/home/wx# python test.py 
Getting uuid of QR code.
Downloading QR code.
██████████████████████████████████████████████████████████████████████████████
██              ████  ██  ██    ████████  ████████  ██  ██████              ██
██  ██████████  ████  ████    ██████████  ██████████  ████████  ██████████  ██
██  ██      ██  ██      ██    ██    ██    ████  ████  ██    ██  ██      ██  ██
██  ██      ██  ██  ██  ████      ██  ██    ████████        ██  ██      ██  ██
██  ██      ██  ████  ██  ██    ██  ██  ██  ██    ██    ██████  ██      ██  ██
██  ██████████  ██████        ██  ██  ██████      ████  ██████  ██████████  ██
██              ██  ██  ██  ██  ██  ██  ██  ██  ██  ██  ██  ██              ██
████████████████████  ██  ██        ██████████  ██    ██    ██████████████████
████████    ██    ██      ████  ██  ████  ██████    ████████████████    ██████
████  ████    ██      ████████    ████████    ██  ██  ██            ██    ████
████    ██      ██  ██      ██    ██████████          ██        ██  ██  ██  ██
████  ██████  ██  ████    ██  ██          ██  ██  ████    ██      ████  ██  ██
██  ████████        ██    ██████    ██      ██████  ████    ██    ██████    ██
██████    ██  ██    ██        ██            ██      ██        ████  ██  ██████
████████    ██    ██  ██  ████    ████████    ██  ██  ██  ██    ██          ██
██  ████  ██  ████  ██  ██  ████████  ████  ██    ██████  ██  ████        ████
██████      ██    ██    ██      ██████  ██        ██  ████  ██    ████  ██  ██
████      ██  ████    ██████      ██████      ██      ██  ██  ██  ██████  ████
██  ██  ██  ██    ██  ██  ████    ██    ██████████  ████  ██████  ████  ██  ██
██    ██  ██████      ████        ██      ██  ████    ██████  ██████  ████████
██  ██  ██  ██  ██    ████        ██████  ██    ██  ████  ████  ██  ██████  ██
██            ██████  ████  ████    ██████          ██        ██  ████      ██
██████    ██    ████████        ██  ██  ██      ████    ██████  ████  ██    ██
██  ██  ██  ██████        ████  ██    ██        ██  ██      ██      ██    ████
██      ██  ██    ██████████  ██      ██    ██  ████      ████      ██      ██
██  ██  ██  ██████████████  ████  ██    ████    ██  ██  ████  ██████    ██████
██  ████    ██      ████  ████  ██  ██      ██    ██  ██            ██████████
██████████████████  ██      ████  ████  ████  ██████  ████  ██████        ████
██              ██    ██    ██  ████    ████████    ██████  ██  ██      ██  ██
██  ██████████  ████    ████    ████    ████  ██        ██  ██████    ██  ████
██  ██      ██  ██  ██  ██          ██  ████████    ████            ████  ████
██  ██      ██  ██  ██████  ████████  ██████  ██████        ██  ████  ████████
██  ██      ██  ████  ████████  ██    ██  ██    ██    ████  ████            ██
██  ██████████  ██████      ██████████  ██████████████  ██████  ██  ██      ██
██              ████  ████    ████    ██████    ████  ████  ██  ████  ████  ██
██████████████████████████████████████████████████████████████████████████████
Please scan the QR code to log in.

可以,哈哈,能愉快的玩微信了。