1. Python 3.8.1安装

源码安装常规操作:

wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

tar -xvf Python-3.8.1.tgz

mkdir -p /my/python/

cd Python-3.8.1

./configure --prefix="/my/python/"

make

make install

make后没报错,但出现了如下提示:

Could not build the ssl module!

Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().

LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

下载libssl(替代openssl)

https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/

源码编译安装成功。我想指定libssl来编译python3,做了如下尝试:

export LDFLAGS=" -L/zfssz3/SP_MSI/USER/pengjianxiang/software/INSTALL/LibreSSL23/lib"

export CPPFLAGS=" -I/zfssz3/SP_MSI/USER/pengjianxiang/software/INSTALL/LibreSSL23/include"

export PKG_CONFIG_PATH="/zfssz3/SP_MSI/USER/pengjianxiang/software/INSTALL/LibreSSL23/lib/pkgconfig"

然后加参数试试。

./configure –prefix=/my/python –enable-shared CFLAGS=-fPIC #提示没这个参数

./configure –prefix=/my/python --with-openssl=/my/libssl/path #编译报错

看一些教程,修改Modules/Setup文件,把这些行取消注释。

#SSL=/usr/local/ssl #改为我安装的ssl路径,尝试了也没用

#_ssl _ssl.c \

# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \

# -L$(SSL)/lib -lssl -lcrypto

以上方法都不行。

最后干脆忽略make提示的这一句,反正它又不是error,直接安装。装成功了。

image.png

Python 3.8.1 (default, Feb 12 2020, 13:03:12)

[GCC 4.9.3] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> print("hello python3")

hello python3

>>>

但是这个SSL的问题在后续会显现。有答案(https://www.cnblogs.com/zhangweiyi/p/10614658.html)说安装python时,应该加这么个参数,否则后续有很多包安装不上:

./configure --prefix=/my/path/python38 --with-ssl # pip3会用到ssl模块,没有指定的话后续该功能不能使用

2. Python3配置及其包安装管理

将python3加入环境变量

系统中我还有个python2.7在用,也加入了环境变量。为了使用的时候能区分版本,加入的时候要注意名字的差异。

python2的bin目录如下,可知用python/python2以及pip/pip2均可:

image.png

成功安装后的python3的bin目录如下,可以用python3/python3.8以及pip3/pip3.8。

image.png

如果安装的python3和python2有重名的话,最好是重命名一下区分后再加入环境中。这里因为我安装后的名字本来就有区分,就可直接加入环境变量了。

环境变量在bash_profile或bashrc中设置都可以,我习惯了bashrc了:

vim ~/.bashrc

# python3/pip3 环境变量

export PATH=/my/path/Python38/bin:$PATH

source ~/.bashrc

查看下是否可以:

which python

>>>/my/path/Python-2.7.15/bin/python

which python2

>>>/my/path/Python-2.7.15/bin/python2

which pip

>>>/my/path/Python-2.7.15/bin/pip

which pip2

>>>/my/path/Python-2.7.15/bin/pip2

which python3

>>>/my/path/Python38/bin/python3

which pip3

>>>/my/path/Python38/bin/pip3

所以若要用python2时,使用python或python2;若用python3时,使用python3即可。

包的路径设置

除了python要设置外,python包的位置也需要定义,不同版本无法相互安装,容易发生冲突。

export PYTHONPATH=/my/path/Python38/lib/python3.8/site-packages

site-packages是python默认安装包的位置,可查看已安装哪些包。也可用pip3 list查看安装包列表。

image.png

包的安装

设置python3的包路径之后,有些包如果直接用pip3 install安装也会出现问题。

建议用某一个版本安装包时,最好是在.bashrc将另一个版本的python和pythonpath注释掉,以免冲突。安装完成或者需要互换时再切换回来。

pip3 install numpy

ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)

ERROR: No matching distribution found for numpy

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

这很有可能是网络的问题,需要使用国内的镜像源来加速,比如豆瓣源。

pip3 install numpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

image.png

总之,安装包首先需要联网,如果安装失败,多种方法都可以尝试下,包括加国内镜像源,或者换镜像源:

pip3 install numpy

pip3 install numpy -i http://pypi.douban.com/simple

pip3 install numpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

如果觉得每次安装包都需要加镜像源很麻烦,也可进行一次性永久性修改,在~/.pip/pip.conf(没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)中添加内容:

[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

[install]

trusted-host=mirrors.aliyun.com

但不建议这么做,因为我觉得各个镜像源的包都不是很全,安装时可以互相补充。很多包其实用默认的反而能安装成功。

如果不确定包名(python2可能与python3有出入),可用pip search package来查看,再安装功能相同的包。比如smtplib模块(发送邮件),如果直接用install是安装不上的:

$ pip3 install smtplib

ERROR: Could not find a version that satisfies the requirement smtplib (from versions: none)

ERROR: No matching distribution found for smtplib

pip3 search smtplib后,可以看到这么多功能类似的包。这里我们安装PyEmail。

image.png

就可以直接导入smtplib模块了。

Python 3.8.1 (default, Feb 13 2020, 10:49:45)

[GCC 4.9.3] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import OptionParser

Traceback (most recent call last):

File "", line 1, in

ModuleNotFoundError: No module named 'OptionParser'

>>> import smtplib

>>> exit()

同样地,如果直接安装MIMEMultipart包会失败,search一下。

image.png

安装这个包后,可导入我们之前用的许多python2模块了。

Python 3.8.1 (default, Feb 13 2020, 10:49:45)

[GCC 4.9.3] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import email.mime.multipart

>>> from optparse import OptionParser

>>> from email.mime.multipart import MIMEMultipart

>>> from email.mime.text import MIMEText

导入包

安装好的包导入试试:

image.png

问题

很多包装不上,报如下错:

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/optionparser/

Could not fetch URL https://pypi.mirrors.ustc.edu.cn/simple/optionparser/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.mirrors.ustc.edu.cn', port=443): Max retries exceeded with url: /simple/optionparser/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

ERROR: Could not find a version that satisfies the requirement optionparser (from versions: none)

ERROR: No matching distribution found for optionparser

WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

简单说就是Can't connect to HTTPS URL because the SSL module is not available,这是因为安装python时未能安装ssl的遗留问题(上面那个答案说加--with-ssl选项,然而并没有这个选项)。python3的ssl模块(ssl用来采集https后缀的链接)必须用openssl并且版本必须大于等于1.02或者libressl2.64(不含)以后的版本,而默认linux的是1.01。有回答说openssl貌似有漏洞,建议用libressl来替代。

image.png

系统自带的openssl版本与python3的版本不匹配,所以这里只要安装libressl就可以解决问题。网上教程都是有root权限修改配置文件,再建立硬链接,但我因为没有root权限,还是比较麻烦的。

下一篇(Linux非root安装Python3以及解决SSL问题)将通过升级openssl,并重新编译python3来彻底解决这个问题。

linux安装python包_【Linux】非root安装Python3及其包管理相关推荐

  1. centos6.0安装mysql_CentOS 6.0 用非root安装MySQL

    这里详细介绍一下用非root账号来编译安装mysql: 1. 先用root新建一个mysql账号 useradd -m mysql 2. 去官网下载mysql-5.1.58.tar.gz,放在/hom ...

  2. 使用eclipse安装python插件_如何为eclipse安装合适版本的python插件pydev

    pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...

  3. windows10安装python环境_在windows10下安装python(配置环境变量),Windows10

    建议使用:anaconda(环境管理和包管理)+Pycharm (强大的IDE开发工具) python环境变量设置: window系统高级设置-> 系统环境变量里 变量名: PYTHONPATH ...

  4. ubuntu下安装python教程_怎么在ubuntu安装python

    怎么在ubuntu安装python? python在ubuntu下有几种安装方法: ● 通过ubuntu官方的apt工具包安装 ● 通过PPA(Personal Package Archive) 的a ...

  5. ubuntu安装python编译器_在Ubuntu上安装/编译grpc时出错

    我有protobuf编译器版本3.0,需要安装grpc和grpc python插件.在教程之后,我将deb http://http.debian.net/debian jessie-backports ...

  6. zzw原创_非root安装fastDFS

    zzw原创_非root安装fastDFS fastDFS 想要非root安装,没找到资料,分析了一下安装脚本,原来作者是留了安装路径的,但没有放出来. 1.解包 [bdc@svr001 setup]$ ...

  7. Linux 安装python 3.8(Linux 的版本为 Centos 7)

    Linux 安装python 3.8(Linux 的版本为 Centos 7) 前言:喜欢傻瓜式复制粘贴的,不会思考安装过程中报错的,不建议看这个,可以去看看其他的,看了安装不了,又喷人,自己不会,解 ...

  8. Linux下安装Python,并在Linux下运行python代码文件

    CentOS配置源 1.查看本地yum源 ll /etc/yum.repos.d/ 2.把默认yum源备份 mkdir /opt/centos-yum.bak mv /etc/yum.repos.d/ ...

  9. ubuntu安装python百度经验_如何在Ubuntu 20.04上安装Python 3.9(含python编译安装和使用Apt命令安装)...

    在本文中,我们将向您展示在Ubuntu 20.04上安装Python 3.9的两种方法.第一种使用APT命令安装Python3.9,第二种是在Ubuntu20.04上编译安装Python 3.9.本教 ...

最新文章

  1. linux mysql8.0.16 下载_Linux CentOS上安装 MySQL 8.0.16
  2. 面试官三连问:分库分表了解吧?业界有哪些常用方案?可能存在什么问题?
  3. CA双向认证的时候,如果一开始下载的证书就有问题的,怎么保证以后的交易没有问题?...
  4. QML中的JavaScript表达式
  5. 深入解读 Knative Eventing 0.7 版本新特性
  6. 没有bug队——加贝——Python 练习实例 1,2
  7. C语言printf控制光标位置和清空屏幕
  8. Setup Factory 打包工具部分功能代码解
  9. python基础-第六篇-6.2模块
  10. python封装成exe后运行失败_python 在编译成EXE 文件后报错 我实在是找不出原因
  11. 2016高管必看的五大互联网营销方法
  12. c++简单程序实现——小公主养成记
  13. 小新700换主板_算不算诚意之作?——联想小新700笔记本到手拆升级+换系统
  14. 如何封装svg矢量图
  15. 小米watch s2功能介绍 小米watch s2测评值得买吗
  16. android 微信好友,朋友圈分享
  17. item_password-获得1688平台淘口令真实url,1688短链接搜索商品接口接入解决方案
  18. 如何获取对方精确位置
  19. opengl 画椭圆_椭圆围城与圆型观光步道
  20. AutoCAD Civil 3D-纵断面-创建曲面纵断面与布局纵断面

热门文章

  1. 计算机中音乐设备数字接口,多媒体cai课件制作技术复习题
  2. 客户端软件 大华_大华“飞燕”,一款主打稳定WiFi的路由器!
  3. 洛谷 P1454【圣诞夜的极光】
  4. 数组自带的函数(方法)
  5. 一本通1586【 例 2】数字游戏
  6. Binary Numbers(HDU1390)
  7. Android 开发工具类 03_HttpUtils
  8. 一步一步往前冲-WCF
  9. quick time不可用_教程|用Selenium爬资源:DIY还是花钱?
  10. Ubuntu之重新安装软件