前提:
有一个flask服务现在已经在a服务器部署, 该服务要进行分布式部署,所以又申请了b,c,d三台服务器
现在要对这三台服务的python环境进行安装。
Linux服务器是内网的环境,服务器是内网相通的,abcd都不能连外网,但是有一台机器S和abcd相通也能连外网。
现在要做的事情就是把a服务器的python版本,python模块,在bcd三台服务器上重新安装一次。
1.不要将其他环境的python3安装目录打包拷贝过来
一开始为了方便直接将a机器的python3安装目录压缩后直接传到bcd机器,解压后添加环境变量就可以用了,
但是后面安装uwsgi的时候报错
使用python3 setup.py install报错
gcc: 错误:/usr/local/python3817/lib/python3.8/config-3.8/libpython3.8.a:没有那个文件或目录
使用make报错
In file included from plugins/python/python_plugin.c:1:0:
plugins/python/uwsgi_python.h:2:20: 致命错误:Python.h:没有那个文件或目录
?#include <Python.h>
2.尽量使用Linux环境去下载python包
一开始觉得Linux服务器上下载的速度慢,便在本地的win10环境下去下载python包
但是安装的时候,发现很多下载的whl包是有win标志的,eg:bcrypt-3.2.0-cp36-abi3-win_amd64
也就意味着只能在windows下安装,Linux下无法安装这些包。
当然也可以指定平台 --platform,可以使用uname -r 查看bcd机器的平台,结果为x86_64。
但是指定后还是容易报错
类似ERROR: Could not find a version that satisfies the requirement bcrypt==3.2.0
3.使用指定版本的pip去下载python包
一开始直接使用的pip3命令去download
pip3 download -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
后面发现默认的pip3是python3.6的版本,下载的包也是python3.6的版本,导致无法安装
所以需要指定python版本
/usr/local/python3.8/bin/pip3 download -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
4.rz 命令上传文件失败生成的乱码文件无法删除
使用rz上传文件到c机器的时候,突然出现乱码,导致文件上传失败。后面在该目录下,发现了两个乱码的文件名
5z?????J^C
?puc?〉?n??Z???A?:?>5z?????J^C
使用rm -rf 删除后,文件依然存在
这时候需要使用ls -li 查找文件的inode
405604306 -rw-r--r-- ?1 test test ? ? ? ?0 1月 ? 3 18:55 5z?????J^C
405604305 -rw-r--r-- ?1 test test ? ? ? ?0 1月 ? 3 17:06 ?puc?〉?n??Z???A?:?>5z?????J^C
然后使用find 去删除
find ./ -inum 405604305 -exec rm -rf {} \;