pushd Python-3.10.2
./configure -C --with-openssl=/usr/local/openssl111 --with-openssl-rpath=auto --prefix=/www/server/python_manager/versions/3.10.0
make -j8
make altinstall
发表于 2022-03-08 09:15 关于centos7通过宝塔python项目管理器安装django4的解决方案 关于ponyorm调试时如何打印执行sql语句的方法
20220402 按照我的思路安装完会出现旧版本的php中openssl跟实际openssl版本不符的问题,需要重新编译php,在编译的时候手动添加模块--with-openssl=/usr/local/openssl111才行。最近站长才发现其实新版本的宝塔是自带openssl1.1.1的,路径在/usr/local/openssl111(已知宝塔7.9.8以其之后的版本就没有这个文件夹了,centos的可以通过https://download.csdn.net/download/hehu158/87712580下载),默认1.0.2的安装路径在/usr/local/openssl,所以无需升级openssl,只要重新编译php或者python,指定openssl路径即可,也经过站长的测试确实可行,不过通过测试重新编译指定openssl路径是可以实现php7.4\php7.1的内置openssl1.1.1的。默认安装完宝塔是没有openssl111跟openssl文件夹的,需要编译安装一个php8.0及以上的php才会有的。
首先要先在python项目管理器中安装一次python3.10,然后下载官方的python源码到/root路径解压,执行如下命令指定openssl111,这样完全可以不用升级默认的openssl。
pushd Python-3.10.2
./configure -C --with-openssl=/usr/local/openssl111 --with-openssl-rpath=auto --prefix=/www/server/python_manager/versions/3.10.0
make -j8
make altinstall
非官方教程,目前测试发现的问题如下,php8以下版本,使用curl请求https会出现502 Bad Gateway nginx,默认php7都是内置openssl1.0.0的,升级openssl1.1.1后,查看phpinfo,出现的openssl版本不一致,所以导致curl请求https会失效,php8内置的是openssl1.1.1的,所以不受影响。如介意请勿操作升级。可以实现看下宝塔官网团队针对openssl升级问题的回答:https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=79935&highlight=openssl,如下思路大家就不用看了哈。
通过python项目管理器安装的python,不管你升级没升级openssl,他都是不会带openssl。不装这个东西,sanic跑不起来,通过pip install xxx模块基本都是失败的,因为现在的镜像源地址都是https的,没有这个东西,安装个模块需要这么写,还是要通过命令行来安装,那么这个python项目管理器就是个看看的,啥也用不了了,在windows上写好的代码想在自己服务器上跑一跑都不行,这个真的很打击人的,如果要测试环境,建议大家还是搞个虚拟机先玩一玩,别用正式的服务器。站长是一步一步测试了好几轮,建议将sqlite3、openssl、python3.10.2源码包下载过来上传到root目录,就是~目录下,进入每个目录执行一边chmod 777 *获取下所有权限。
虚拟python的环境路径/python -m pip install django -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
没有安装openssl时会报错
通过python管理器中的模块添加基本都是会提示安装失败的,这个东西也感觉不是很友好,有的高一点的python版本错误日志还没有,搞的人一头雾水。
测试支不支持opensll的方法很简单,命令行下执行/www/server/python_manager/versions/3.10.0/bin/python3
然后输入import ssl回车
Traceback (most recent call last):
File "
File "/www/server/python_manager/versions/3.10.0/lib/python3.10/ssl.py", line 98, in
import _ssl # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
centos7宝塔安装完默认的openssl是OpenSSL 1.0.2k-fips 26 Jan 2017,官网https://www.openssl.org/上最新的是3.x(这个还没仔细研究过,没安装成功),1.1.1m版本的仅支持到2023年
下面给大家介绍下站长具体的解决方案:
安装宝塔;
升级sqlite3,如果没有用到的话就算了,这个倒还是挺好的,你升级完再通过python项目管理器安装还是会将最版本的sqlite3带进来的;
升级openssl到1.1.1m,这个通过python项目管理器是带不动的;
通过python项目管理器安装最高版本好了;
最后偷梁换柱,从python官网下载源码对python重新编译重新安装,覆盖到/www/server/python_manager/versions/3.10.0,最后你再使用python项目管理器你就会觉得真香了哈。参考网址https://docs.python.org/zh-cn/3.10/using/unix.html#on-linux
python-docx给docx的word添加JPG图片报错docx.image.exceptions.UnrecognizedImageError,最终有问题的还是自己的代码,python-docx写的真是不错,一定要注意自己生成的代码跟图片有没有问题。
要真正把宝塔的python项目管理器使用起来,需要经历一番复杂的操作才可以,否则这个东西就是个鸡肋。
python在批量处理excel跟批量导入信息到数据库都是最优选择,兼容到xp了,没话说,老的项目一样能搞定。打包完提示不是有效的win32应用程序都是小问题了。
没有免费合适的批量压缩图片的工具,我们就用python造一个吧。
使用pony orm写的数据库底层,如何调试并打印执行的sql语句是否有问题,看这里就够了。
python批量上传工具,终于不用担心数据量太大网页上传会超时的问题了。
PYTHON3腾讯云阿里云宝塔文件夹一键打包FTP上传工具,为了偷懒,把VUE打包、FTP批量上传文件的工作交给PYTHON来完成,直接双击然后就可以忙别的活了。