python基础——python安装及问题解决
python3.7.3安装
centos 7上默认安装的python版本是2.7.5,系统自带的旧版本python被系统很多其他软件环境依赖,因此不能卸载原python,但可以再安装另一个python版本
[root@python ~]# python -v python 2.7.5
安装前的准备
#python3可能使用的依赖 [root@python ~]# yum install gcc gcc-c++ make zlib* libffi-devel openssl-devel -y [root@python ~]# wget https://www.python.org/ftp/python/3.7.3/python-3.7.3.tgz [root@python ~]# ll python-3.7.3.tar.xz -rw-r--r--. 1 root root 17108364 3月 26 19:00 python-3.7.3.tar.xz [root@python ~]# tar xf python-3.7.3.tar.xz -c /usr/local/src
修改setup文件,启动ssl模块
[root@python ~]# vim /usr/local/src/python-3.7.3/modules/setup.dist # socket module helper for socket(2) _socket socketmodule.c timemodule.c # socket module helper for ssl support; you must comment out the other # socket line above, and possibly edit the ssl variable: ssl=/usr/local/ssl _ssl _ssl.c \ -duse_ssl -i$(ssl)/include -i$(ssl)/include/openssl \ -l$(ssl)/lib -lssl -lcrypto
安装python3
[root@python ~]# cd /usr/local/src/python-3.7.3 [root@python python-3.7.3]# ./configure --with-ssl --prefix=/usr/local/python3.7.3 [root@python python-3.7.3]# make && make install #新建软连接,指向新安装的python3.7.3 [root@python ~]# ln -s /usr/local/python3.7.3/bin/python3.7 /usr/bin/python3 #查看ssl是否安装成功 [root@python ~]# python3 >>> import ssl >>>
在./configure过程中,如果没有加上--with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,但pip3过程需要ssl模块
安装pip
一般情况下,linux系统自带的python2没有安装pip,python3.7.3自带pip,可以进入python3.7.3的bin目录下进行查看
[root@python bin]# pwd /usr/local/python3.7.3/bin [root@python bin]# ll pip* -rwxr-xr-x. 1 root root 244 3月 27 05:18 pip -rwxr-xr-x. 1 root root 244 3月 27 05:18 pip3 -rwxr-xr-x. 1 root root 244 3月 27 05:18 pip3.7 #创建软连接 [root@python ~]# ln -s /usr/local/python3.7.3/bin/pip3 /usr/bin/pip3 #在使用pip进行操作时,可能会提示pip版本不匹配,需要更新,执行更新命令 [root@python ~]# pip3 install --upgrade pip successfully installed pip-20.0.2 [root@python bin]# pip3 -v pip 20.0.2 from /usr/local/python3.7.3/lib/python3.7/site-packages/pip (python 3.7)
安装虚拟环境 virtualenv
什么是virtualenv
virtualenv用于创建虚拟的python环境,一个专属于项目的python环境,不同的项目可以创建不同的pthon环境(依赖项和版本等),各个环境之间完全隔离,不需要担心和其他项目的python环境以及全局的python环境发生冲突。
使用pip命令安装virtualenv模块
[root@python ~]# pip3 install virtualenv successfully installed appdirs-1.4.3 distlib-0.3.0 filelock-3.0.12 importlib-[root@python ~]# metadata-1.5.2 six-1.14.0 virtualenv-20.0.14 zipp-3.1.0 ln -s /usr/local/python3.6.7/bin/virtualenv /usr/bin/virtualenv [root@python ~]# virtualenv --version 15.1.0
新建虚拟环境
[root@python ~]# virtualenv py1 #创建名为py1的虚拟环境 new python executable in /root/py1/bin/python installing setuptools, pip, wheel...done.
直接使用命令virtualenv可以创建一个独立的python运行环境,加上参数--no-site-packages
,已经安装到系统python环境中的第三方包都不复制到独立环境中
运行虚拟环境
[root@python ~]# cd /root/py1/bin/ [root@python bin]# source activate (py1) [root@python bin]#
退出虚拟环境
(py1) [root@python bin]# deactivate [root@python bin]#
其他命令
查看当前虚拟机环境目录 worken
切换虚拟环境 workon venv2
退出虚拟环境 deactivate
删除虚拟环境 rmvirtualenv venv
虚拟环境管理工具
[root@python ~]# pip3 install virtualenvwrapper successfully installed pbr-5.4.4 stevedore-1.32.0 virtualenv-clone-0.5.3 virtualenvwrapper-4.8.4 [root@python ~]# find / -name virtualenvwrapper.sh /usr/local/python3.7.3/bin/virtualenvwrapper.sh [root@python ~]# vim .bashrc export workon_home=$home/.virtualenvs source /usr/local/python3.7.3/bin/virtualenvwrapper.sh #测试 [root@python ~]# mkvirtualenv py1 [root@python ~]# mkvirtualenv --python=/usr/bin/python3 py2 #指定python环境为3版本
问题与解决
(1) ./modules/_ssl.c:57:25: 致命错误:openssl/rsa.h:没有那个文件或目录
错误原因 尝试编译的程序使用openssl,但是缺少和openssl链接的文件(库和头文件)
解决办法 yum install openssl-devel
(2)pip install -i virtualenv deprecation: python 2.7 reached the end of its life on january 1st, 2020. please upgrade your python as python 2.7
已停止维护,用pip3
(3)python3.7安装后pip pip3 pip3.7的区别
(4)执行virtualenv --version命令提示-bash: virtualenv: command not found
按照如下方式找到virtualenv并创建软链接,再执行上述查询版本信息的命令
find / -name virtualenv #全局查找virtualenv /usr/local/python3/bin/virtualenv #找到路径 ln -s /usr/local/python3.7.3/bin/virtualenv /usr/bin/virtualenv #添加软链接
(5)安装虚拟环境/usr/bin/python: no module named virtualenvwrapper
错误原因 系统上安装了2.7和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper,在运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块
在bashrc文件里面加入如下命令
irtualenvwrapper_python=/usr/bin/python3 #选择python3解释器
(6)attributeerror: module 'enum' has no attribute 'intflag'
错误原因 国内源更新不及时,安装的包少东西
(7)python安装虚拟环境出现错误:error while finding module specification for 'virtualenvwrapper.hook_loader'
/usr/local/bin/python3: error while finding module specification for 'virtualenvwrapper.hook_loader' (modulenotfounderror: no module named 'virtualenvwrapper') virtualenvwrapper.sh: there was a problem running the initialization hooks. if python could not import the module virtualenvwrapper.hook_loader, check that virtualenvwrapper has been installed for virtualenvwrapper_python=/usr/local/bin/python3 and that path is set properly.
解决办法 python3 -m pip install --user virtualenvwrapper --upgrade