后端有点问题一直拖到现在,学长在摸鱼,我也闲着无聊先去看下。
主要是python脚本没有跑起来。
- 看下原来的代码在哪个地方用到python
我发现之前上传的是我有改过的,可能是因为我有部分的地方改过所以导致了用不了
服务器上面是没有安装python3.11的,所以得装一个python3.11
问了一下gpt,直接就是下了源码然后编译,目前来看还算是比较顺利
离线安装的依赖版本和本地的python版本一致
因为我电脑上的是3.12,服务器上需要的是3.11
所以之前本地打包的依赖服务器的安装不了
现在得先在本地启一个3.11的虚拟环境然后在虚拟环境下再来下载这些依赖
先是用scoop安装一下python311
scoop bucket add versions
scoop install versions/python311
然后创建一个虚拟环境
python311 -m venv py311env
然后激活虚拟环境(我用的是git bash)
source py311env/Scripts/activate
之后再下载依赖
mkdir my_pkgs
cd my_pkgs
pip download pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python
然后打包成tar,在服务器上解压,再用pip安装
pip3 install --no-index --find-links=. pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python
有点尴尬,忘记了电脑是windows,下的依赖只能是windows用不能给linux用
现在是打算用wsl重复一下上面的步骤
wsl上面需要还是手动编译一个python3.11
先要安装一下编译的依赖:
sudo su # 获取权限
sudo apt-get update
# 随文章进行而更新,依赖应该是全的
sudo apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget
然后就是编译安装
cd /opt
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz # 下载python
tar -xzf Python-3.11.9.tgz
cd Python-3.11.9
# 安装编译依赖(如果有权限,可以让管理员预装)
# CentOS: yum groupinstall "Development Tools"
# Debian/Ubuntu: apt-get install build-essential
# 编译并安装到自定义目录(不要覆盖系统 Python 2.7)
sudo ./configure --prefix=/opt/python3.11 --enable-optimizations
sudo make -j$(nproc) # 编译时间较长
sudo make install
配置环境变量:
# 加入环境变量
echo 'export PATH=/opt/python3.11/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 验证版本
python3 --version
目前来说还算顺利
后面下载依赖的时候不知道为什么还是下的3.12的版本,可能pip直接安装是这样的?不懂,还是得建一个虚拟环境试下
创建虚拟环境失败,其实之前编译的时候有问题,但是我直接给忽略了,现在看来应该是编译出问题了,感觉wsl好像什么都没有。
问了一个gpt报错,说是因为少了依赖,先下完依赖之后再更新
还是得建一个虚拟环境,不过python的安装倒是顺利,不错。
目前好像是因为说内网的那个linux的版本比较老,一些包不支持,所以得专门下载低版本去安装希望顺利
可以先查看一下支持哪些平台
python3 -m pip debug --verbose
然后对于某一个包可以指定平台下载,例如:
pip download \
--only-binary=:all: \
--platform manylinux2014_x86_64 \
--python-version 311 \
--implementation cp \
--abi cp311 \
Pillow==10.0.1
目前都挺顺利的,但是到了要运行的时候发现内部少了Python 标准库模块 ctypes
应该是编译的问题,问了一下gpt说是服务器少了libffi
开发依赖
所以现在是先让那边的管理员看能不能解决,或者干脆帮忙装一下python3.11,唉。
至少可以先停一会儿了。
后面因为连不了网,他们那边也是没有解决方法,只能是我这里继续。
我查了一下linux版本是Centos7,然后网上找了一个rpm的包
https://ftp.iij.ad.jp/pub/linux/centos-vault/centos/7.7.1908/cr/x86_64/Packages/
本地安装了一下这个依赖,然后再重新编译,目前貌似没有什么问题,一切顺利
sudo yum install ./*.rpm
装好了之后,重新编译python3之后又运行了一遍脚本,然后补装了一个库,总归是可行了。
之后就是把服务重新启动一下,过一两天看下数据库的数据,如果没有问题的话,这个就解决了,可喜可贺,可喜可贺。