源码安装python
-
安装python源码所依赖的工具及依赖的库
yum install -y make gcc gcc-c++ yum install -y bzip2 bzip2-devel zlib-devel yum install -y openssl openssl-devel readline-devel sqlite-devel yum install -y make xz
-
下载安装python源码
从官方网站或者华为镜像源下载所有需的源码包,此处以Python-2.7.18.tar.xz为例.
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz yum -y install make xz xz -d Python-2.7.18.tar.xz tar xvf Python-2.7.18.tar mkdir -p Python-2.7.18/build cd Python-2.7.18/build ../configure --enable-shared --enable-optimizations --prefix=/usr/local/python2 make make install
make install can overwrite or masquerade the python3 binary. make altinstall is therefore recommended instead of make install since it only installs exec_prefix/bin/pythonversion.
-
通过下面命令可以查看安装包的路径
$ python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())" /usr/lib/python2.7/site-packages $ python -c "import os; print os.__file__" /usr/lib64/python2.7/os.pyc $ python -c "import sys; print sys.executable" /usr/bin/python
-
其他配置
-
解决python运行时找不到动态库的问题
echo /usr/local/python2/lib > /etc/ld.so.conf.d/python27-x86_64.conf # 将/usr/local/python2/lib添加到/etc/ld.so.conf文件末尾 ldconfig
-
工具yum使用的原版的python,在这里需要处理。
vi /usr/bin/yum将第一行的#!/usr/bin/python修改为系统原有的python版本地址#!/usr/bin/python2.6
-
-
python升级脚本
#!/bin/bash FILE_DIR=$(cd "$(dirname "$0")"; pwd) function upgrade_python { # 安装编译python源码必须的工具 yum -y install wget xz yum -y install gcc gcc-c++ yum -y install make automake autoconf yum -y install bzip2 bzip2-devel bzip2-libs zlib-devel readline-devel yum -y install openssl openssl-devel yum -y install bind-utils # 下载python源码包 [ -e Python-2.7.18.tar.xz ] || wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz xz -k -d Python-2.7.18.tar.xz tar xvf Python-2.7.18.tar mkdir -p Python-2.7.18/build cd Python-2.7.18/build ../configure --enable-shared --enable-optimizations --prefix=/usr/local/python2 make make install cd "${FILE_DIR}" # 解决Python运行时找不到动态库的问题 echo "/usr/local/python2/lib" > /etc/ld.so.conf.d/python27-x86_64.conf ldconfig # yum工具默认依赖python2.6,需要修改 sed -i '1s/python$/python2.6/' /usr/bin/yum # 备份/usr/bin/python,连接到新安装的python版本上 mv /usr/bin/python{,_bk} ln -s /usr/local/bin/python /usr/bin/python # 安装pip setuptools wheel工具包 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py -O - | /usr/local/python2/bin/python2.7 } upgrade_python
-
python -c "import sysconfig; print(sysconfig.get_config_vars(\"CONFIG_ARGS\"))"
可以查看python的配置参数
Sat Mar 6 17:48:27 CST 2021 CentOS7 Python3.8.8
yum install gcc gcc-c++ make pkgconfig
yum install libffi-devel zlib-devel xz-devel bzip2-devel readline-devel sqlite-devel ncurses-devel gdbm-devel openssl-devel expat-devel libtirpc-devel libuuid-devel
CXX=/usr/bin/g++ ./configure --prefix=/usr/local/python388 --with-ssl-default-suites=openssl
make -j 4
make altinstall
ls /usr/local/python388/bin/
# 2to3-3.8 easy_install-3.8 idle3.8 pip3.8 pydoc3.8 python3.8 python3.8-config
工具包安装及使用
打包工具setuptools
- 功能:Easily download, build, install, upgrade, and uninstall Python packages
- 具体安装方法请自行参考:https://pypi.python.org/pypi/setuptools#downloads
- 官网倡导的安装方法:
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
此包给用户使用的easy_install工具,安装需要的包简单易用,开发者发布包的所需指导。
- The EasyInstall user’s guide and reference manual
- The setuptools Developer’s Guide
- The pkg_resources API reference
- The Internal Structure of Python Eggs
包安装工具pip
- 功能:The PyPA recommended tool for installing Python packages
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O - | python
- pip主页地址:https://pypi.python.org/pypi/pip#downloads
- 源码安装
wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#md5=3823d2343d9f3aaab21cf9c917710196tar zxvf pip-7.1.2.tar.gz cd pip-7.1.2 python setup.py install
安装后的工具path:PythonXX/Scripts,在window下有必要将此路径加入环境变量path中
使用pip:
- pip --help 查看pip的帮助文档
- pip list 查看已安装的packages
- pip install xlrd 安装xlrd,用于处理Excel的packages
其他应用请参照pip帮助
Python自动文档工具pydoc
首先认识一条比较重要的命令
python -m mod
作为脚本运行mod库,if name == 'main’是作为脚本运行的部分.
python -m SimpleHTTPServer 6666
#简单一个命令搭建目录服务器- 查看math库手册
python -m pydoc math
- 查看函数手册
python -m pydoc math.asin
- 开启本地手册服务器,可以再网页上查看所有的库函数手册,感觉十分强大
python -m pydoc -p port
python2脚本转化为python3脚本的工具2to3
python是中十分强大的语言,但它的高速发展,也给广大开发这带来许多困惑,python3并不兼容python2
Python3x/Tools/Scripts/2to3.py
#test.py
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
C:/Python34/Tools/Scripts/2to3.py -w test.py
#test.py
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)
这里可以看到2to3后的变化
pirnt函数函数调用的方式使用,raw_input替换成了input
详细转换请参照python3的手册以及http://woodpecker.org.cn/diveintopython3/porting-code-to-python-3-with-2to3.html
参考
- http://www.aiplaypc.com/31.html
- Python Developer’s Guide¶
- [https://devguide.python.org/setup/#build-dependencies](Install dependencies)
- Common build problems