鬼知道我一天天都在什么破事上浪费时间。——鲁迅(不是

起因

老板舍不得买卡,需要训练一个训练起来非常耗时的模型,借了别人服务器使,人家给了一台硬件相当不错(我活这么久没见过)、软件极其落后的机器,系统是Ubuntu 16.04无可厚非,0202年了Python居然还在用3.5.2,没有pip。没有root权限,我的项目又需要Python 3.6以上的环境,没办法,自力更生,搞起来。

依赖库的准备

我遇到的缺失的库包括:OpenSSL、zlib和libffi,依次编译安装。

1. OpenSSL的编译安装

去官网下载源码,解压,配置并编译安装即可。

OpenSSL是pip下载包必不可少的库(除非不使用HTTPS)。

tar -xzf openssl-3.0.0-alpha7.tar.gz
cd openssl-3.0.0-alpha7
./config --prefix=/home/用户名/ssl
make -j48 && make install

是的,两颗至强金牌,共24核48线程,羡慕哭。

2. zlib的编译安装

同样去官网下载源码,解压,配置并编译安装。

zlib是Python编译时必须用到的库。

tar -xzf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/home/用户名/zlib
make -j48 && make install

3. libffi的编译安装

去GitHub下载源码,解压,配置并编译安装。

libffi是Python编译“_ctypes”模块必须的库,没有这个模块,后续包的安装编译基本寸步难行。

tar -xzf libffi-3.3.tar.gz
cd libffi-3.3
./configure --prefix=/home/用户名/ffi
make -j48 && make install

此外,还需要将libffi的包信息写入系统变量:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/用户名/ffi/lib/pkgconfig

4. 将依赖的动态库路径写入链接路径

防止接下来Python编译时找不到这3个库。

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/用户名/ssl/lib:/home/用户名/zlib/lib:/home/用户名/ffi/lib

Python的下载,编译和安装

首先去官网下载源码并解压进入目录,连通性不是很好,可能有人需要科学上网。

tar -xzf Python-3.8.6.tgz
cd Python-3.8.6

修改Modules目录下的Setup文件,取消掉其中对SSL和zlib的模块注释:

SSL=/home/用户名/ssl
_ssl _ssl.c -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl -L$(SSL)/lib -lssl -lcrypto
zlib zlibmodule.c -I/home/用户名/zlib/include -L/home/用户名/zlib/lib -lz

配置,需要利用pkg-config指定链接libffi,并指定OpenSSL的位置:

LDFLAGS=`pkg-config --libs-only-L libffi` ./configure --prefix=/home/用户名/py38 --with-openssl=/home/用户名/ssl --enable-optimizations 

编译并安装:

make -j48 && make install

在系统路径中添加Python的路径(最好写到.bashrc里):

export PATH=/home/用户名/py38/bin:$PATH

其他

方便起见,可以用别名指定Python和pip的版本:

alias python=python3.8
alias pip=pip3.8

我也不知道我上辈子造了什么孽天天要把时间浪费在这种无聊的事情上。——小B宰治

Linux(Ubuntu 16.04)下非root用户编译安装Python 3.8.6相关推荐

  1. Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示

    (首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/  ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...

  2. linux是不是在根目录下安装的软件其它用户就可以使用,[转载]Linux下非root用户如何安装软件...

    [转载]Linux下非root用户如何安装软件 这是本人遇到的实际问题,之前用到的所有机器,无论是自己的PC还是云服务器,root权限都是妥妥的,但是现在发现实验室的服务器原来自己并没有root权限2 ...

  3. linux ttyusb读写_linux下非root用户获得devttyUSB0的读写权限

    linux下非root用户获得devttyUSB0的读写权限 首先查看/dev/ttyUSB0的权限属性,在终端输入:teashaw@http://www.doczj.com/doc/049b1b8e ...

  4. linux tomcat守护_linux下非root用户运行tomcat

    # 前言:为什么要使用非root用户运行tomcat root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(html/js)都具有root权 ...

  5. gtx1070显卡 linux,Ubuntu 16.04下Nvidia 显卡驱动安装

    环境: Ubuntu 16.04 64bit Nvidia GeForce GTX 1070 解决了个人遇到的一些问题. 获取驱动 安装驱动的途径有很多,如run文件.deb文件.PPA源.apt-g ...

  6. 非root用户编译安装源码包

    今天看IBM的文档:"对话 UNIX: 高效管理大量计算机"(http://www.ibm.com/developerworks/cn/aix/library/au-spunix_ ...

  7. linux ubuntu 16.04下deb文件的安装以及一些问题的解决

    pkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装.更新及移除.所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu.Knoppi ...

  8. ubuntu中怎么打开python_如何在Linux Ubuntu 16.04下安装及打开PyCharm

    下载 安装 PyCharm 下载好的文件的名称可能是 'pycharm-community-2017.2.3.tar.gz' 首先打开终端,然后通过下面的命令进入下载文件所在的文件夹: cd ~/Do ...

  9. Linux (Ubuntu 16.04) 下 搜狗拼音输入法乱码问题的解决方法

    说明:转载请注明出处. Ubuntu系统下搜狗拼音输入法经常乱码,搜索到的解决方法大多不可用,或者只能解决一次,很快就又出现乱码的情况.博主无意间发现一个方法,经测试,90%以上的概率是可行的,只有那 ...

最新文章

  1. 自己封装的一个java图片验证码
  2. math.floor java_Java Math.floor() 方法
  3. Redis-Session无状态会话技术
  4. Android中动态获取Drawable中的图片
  5. vs qt 在linux运行,QT安装以及使用(QT支持linux和windows,也支持C/C++代码的编译运行,比vs简洁多)...
  6. nodemcu固件_从无到有玩NodeMcu:web端控制
  7. (转)深入理解最强桌面地图控件GMAP.NET ---离线地图
  8. 已触发了一个断点 vs_实现ABAP条件断点的三种方式
  9. Layui select 的动态添加
  10. 有趣!让你的桌面独一无二——iWall for Mac2.1.1破解版可以交互的动态桌面壁纸!
  11. 十进制转格雷码 c语言,C语言输出格雷码
  12. Pyecharts直角坐标系图:象形柱状图 PictorialBar
  13. maven命令创建支持eclipse的多模块maven项目
  14. 轻松获取windows10锁屏壁纸
  15. wim工具扫描linux磁盘,[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]...
  16. 289714-02-9,Biotin-PEG3-alcohol,Biotin-PEG3-OH含有一个生物素基团和一个与多种官能团反应的末端伯羟基
  17. PHP面试-复习知识点整理
  18. 上海滩玩起了黑科技,苏宁Biu店带你刷脸扫货
  19. 【心电监测】理论1-相关医学知识
  20. Sound Forge使用技巧之制作手机铃声

热门文章

  1. 登录psn 服务器无响应,链接psn服务器超时
  2. 根据cadence设计图学习硬件知识day07 了解一些芯片
  3. CAN(Controller Area Network)通信介绍及其运作方法
  4. 快加入「我的最爱」吧 Python 开发者不容错过的30 个Github 开源专案(下)
  5. 动易SiteFactory维护点滴
  6. 开发板通过网线和电脑直连,ping通的网络设置
  7. STM32F407中的RT-thread系统中移植LCD的程序-FSMC控制
  8. 在进行CMOS设置时也会出现死机
  9. 华为服务器网卡驱动安装文件夹,服务器网卡驱动安装
  10. 2018 年上半年网络工程师考试上午真题