用一键安装脚本Shadowsocksr 安装完成后,一切看上去都顺风顺水,可是执行 python server.py 报了以下错误:

1
2
3
4
5
6
7
8
[root@x shadowsocksr]# python server.py
File "server.py", line 25, in
import db_transfer
File "/root/shadowsocksr/db_transfer.py", line 13, in
from database import *
File "/root/shadowsocksr/database/init.py", line 9, in
from peewee import *
ImportError: No module named peewee

这个问题是因为依赖库缺失,奇怪的是安装的时候并没有任何错误提示。解决这个问题我们只需要将对应的依赖安装上就可以了。
首先安装 pip,CentOS用以下命令:

1
2
yum install -y python-setuptools m2crypto
easy_install pip

Ubuntu用下面的命令:

1
apt install -y  python-pip m2crypto

安装完 pip后就可以安装缺失的依赖了,提示缺什么安装什么即可。

1
pip install pymysql peewee pickle

可能在某些情况下设置了比较特殊的协议,如 chacha20,此时你还需要安装额外的依赖:

1
2
3
4
5
6
7
cd /usr/
rm -rf /usr/libsodium-1.0.16
wget https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz
tar xf libsodium-1.0.16.tar.gz && cd libsodium-1.0.16
./configure && make -j2 && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
rm -rf libsodium-1.0.16.tar.gz