centOS7默认只有python2,而我们日常需要更多的还是python3。
通过conda安装的python十分臃肿,而且conda环境会影响R寻找系统资源,根据多年实践,最好还是使用源码编译安装python3。
系统:CentOS7
安装方式: 无root安装。
安装位置:~/soft/ 下。
1.下载python3源码
python3 各版本的源码:
https://www.python.org/downloads/source/
我们选择的3.7,其他版本类似。
安装依赖。
$ sudo yum install gcc openssl-devel bzip2-devel libffi-devel xz-devel -y
$ rpm -qa | grep openssl-devel
openssl-devel-1.0.2k-26.el7_9.x86_64
$ cd ~/data/Downloads
$ wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
$ tar -xzf Python-3.7.0.tgz
$ cd Python-3.7.0/
注意:使用centOS自带的gcc 4.8.5编译正常
;而我新安装的 gcc (GCC) 12.1.0 不行,编译后各种报错。
还有就是如果有些依赖没有安装,则yum安装后要重新编译python,注意,必须使用同样的gcc!
gcc版本问题很敏感!这一步浪费了我好几天时间。
2. 开始安装 py
## ./configure --enable-optimizations --prefix=/home/wangjl2/ #不要安装这里,这个目录设置的不好,目录污染太严重
## ./configure --enable-optimizations --prefix=/home/$USER/local/python3/ #这个也不好,文件保存在了镜像中!
推荐这个:不污染home目录,包在数据目录:
$ mkdir /home/$USER/soft/python3/
$ ./configure --enable-optimizations --prefix=/home/$USER/soft/python3/
$ make -j 16
$ make install
添加到 PATH
$ vim ~/.bashrc #添加一行
export PATH=/home/$USER/soft/python3/bin:$PATH
使用设置
$ source ~/.bashrc
查看py位置
$ which python3
~/soft/python3/bin/python3
$ which pip3
~/soft/python3/bin/pip3
查看版本号
$ python3 -V
Python 3.7.0 (default, May 1 2023, 14:26:30)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
$ pip3 -V
pip 10.0.1 from /home/wangjl2/soft/python3/lib/python3.7/site-packages/pip (python 3.7)
3. 配置国内的pip源
C1) 升级pip
$ pip3 list | grep pip
pip 10.0.1
设置国内源
$ mkdir ~/.pip/
$ vim ~/.pip/pip.conf
[global]
index-url=https://pypi.douban.com/simple/
trusted-host = pypi.douban.com
$ pip3 install --upgrade pip -i https://pypi.douban.com/simple/
$ pip3 -V
pip 23.0.1 from /home/wangjl2/soft/python3/lib/python3.7/site-packages/pip (python 3.7)
$ pip3 list | grep pip
pip 23.0.1
以后包的安装位置: /home/wangjl2/soft/python3/lib/python3.7/site-packages/
(2) 开始安装py包: jupyter
–user 参数的作用?就是把包安装到 ~/.local/下,不是我需要的。
$ pip3 install jupyter -i https://pypi.douban.com/simple/
如果配置过配置文件~/.pip/pip.conf,则-i参数可以省略
$ pip3 install jupyter
$ pip3 list | grep jupyter
=End=