本文记录一下在Windows和Linux上安装部署Python环境以及Python包管理方法。
目录
- 1 Windows上安装Python
- 2 Linux安装Python
- 2.1 环境准备
- 2.2 安装
- 2.3 验证
- 3 python虚拟环境
- 3.1 虚拟环境安装
- 3.2 虚拟环境激活
- 3.3 虚拟环境去激活
- 4 python包管理
- 4.1 pip包管理工具
- 4.2 包安装
- 4.2.1 在线安装
- 4.2.2 离线安装
- 4.3 包卸载
- 4.4 包升级
- 4.5 包查看
- 4.6 生成依赖包列表文件
- 4.7 包下载及安装
1 Windows上安装Python
访问Python官网下载安装包:https://www.python.org/ ,Windows系统Python安装包下载地址:https://www.python.org/downloads/windows/,需要注意Windows系统版本所支持的Python版本,比如Windows7不支持Python3.9及之后的版本。
本文所使用的系统为Windows11,安装的Python版本为3.10.11。
下载完成后双击安装即可,建议将Python加入环境变量。
安装完成后,打开cmd窗口执行python --version
或者python -V
命令可查看安装的Python版本。
$ python --version
Python 3.10.11
执行where.exe python
命令可查看Python的安装路径:
$ where.exe python
D:\tools\python310\python.exe
除了在Python官网下载安装官方Python发行版外,也可以安装Anaconda,Anaconda 是一个用于科学计算的开源 Python 发行版,支持 Linux, Mac, Windows,包含了很多常用的科学计算和数据分析的库,例如 NumPy、SciPy、Pandas、Matplotlib 等。通过 conda 包管理器来安装、更新和管理 Python 包和环境。本文不做详细介绍,anaconda安装包下载地址:https://docs.anaconda.com/free/anaconda/allpkglists/。
2 Linux安装Python
这里介绍centos上安装方法:
2.1 环境准备
本文使用的Linux发行版本为centos7:
$ uname -a
Linux Server 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
更新yum包管理器:
$ sudo yum -y update
安装必要的构建依赖项:
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel
$ sudo yum -y install perl-IPC-Cmd
Python3.10需要OpenSSL1.1以上的版本,需要下载编译openssl-3.0.7:
$ yum remove openssl
$ wget https://www.openssl.org/source/openssl-3.0.7.tar.gz
$ tar -zxvf openssl-3.0.7.tar.gz
$ cd openssl-3.0.7
$ ./config --prefix=/usr/local/openssl
$ make & make install
编译安装完成后检查是否安装成功:
$ which openssl
/usr/bin/openssl
$ openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
如果报错,重新添加一下软链接:
rm -rf /usr/bin/openssl
rm -rf /usr/include/openssl
rm -rf /usr/lib64/libssl.so
rm -rf /usr/lib64/libcrypto.so
rm -rf /usr/lib/libssl.so
rm -rf /usr/lib/libcrypto.soln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib64/libssl.so /usr/lib64/libssl.so
ln -s /usr/local/openssl/lib64/libcrypto.so /usr/lib64/libcrypto.so
ln -s /usr/local/openssl/lib64/libssl.so /usr/lib/libssl.so
ln -s /usr/local/openssl/lib64/libcrypto.so /usr/lib/libcrypto.so
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
写入动态库的路径:
$ echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
$ ldconfig
2.2 安装
修改python安装包下/Modules/Setup
文件,配置OPENSSL路径:
$ vim /root/Python-3.10.11/Modules/Setup# Socket module helper for socket(2)
_socket socketmodule.c# Socket module helper for SSL support; you must comment out the other
# socket line above, and edit the OPENSSL variable:
OPENSSL=/usr/local/openssl
_ssl _ssl.c \-I$(OPENSSL)/include -L$(OPENSSL)/lib64 \-lssl -lcrypto
下载python源码:https://www.python.org/downloads/source/,我下载的版本为3.10.11,得到Python-3.10.11.tgz文件。
或者使用wget命令下载:
$ wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
解压:
$ tar xvf Python-3.10.11.tgz
$ cd Python-3.10.11
指定安装路径:
$ ./configure --prefix=/usr/local/python3.10.11 --enable-shared
使用make命令编译安装:
$ make && make install
#添加python3软链接到/usr/bin/python3
ln -s /usr/local/python3.10.11/bin/python3.10 /usr/bin/python3#添加pip3软链接/usr/bin/pip3
ln -s /usr/local/python3.10.11/bin/pip3 /usr/bin/pip3
如果提示已存在,需要先删除:
$ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 3月 24 20:29 /usr/bin/python3 -> python3.6
$ rm /usr/bin/python3
rm:是否删除符号链接 "/usr/bin/python3"?yes
$ ls -l /usr/bin/python3
ls: 无法访问/usr/bin/python3: 没有那个文件或目录
$ ln -s /usr/local/python3.10.11/bin/python3.10 /usr/bin/python3
$ ls -l /usr/bin/pip3
-rwxr-xr-x 1 root root 407 10月 14 2020 /usr/bin/pip3
$ rm /usr/bin/pip3
rm:是否删除普通文件 "/usr/bin/pip3"?yes
$ ln -s /usr/local/python3.10.11/bin/pip3 /usr/bin/pip3
$ python3 -V
Python 3.10.11
接下来把/usr/local/python3.10.11/bin
添加到环境变量:
$ vim /etc/profile
export PATH=$PATH:/usr/local/python3.10.11/bin$ source /etc/profile
查看python3路径:
$ which python3
/usr/bin/python3
2.3 验证
执行
$ python3 --version
Python 3.10.11
3 python虚拟环境
3.1 虚拟环境安装
我们可以通过虚拟环境为每个python项目安装和管理项目所需特定的Python库,比如两个项目可能需要不同的库版本。虚拟环境是一个单独的目录结构,通常包含在python项目根目录中,命名为venv
或者.venv
。
可以使用venv
模块来创建虚拟环境,
# 进入项目根目录
$ cd D:/devWorkspace/PythonProject/venvDemo
# 创建名为venv的虚拟环境
$ python -m venv venv
生成的虚拟环境目录结构如下:
\---venv+---Include+---Lib| +---site-packages| +---pip| +---pip-23.0.1.dist-info| +---pkg_resources| +---setuptools| +---setuptools-65.5.0.dist-info| +---_distutils_hack+---Scripts| +---activate| +---activate.bat| +---Activate.ps1| +---deactivate.bat| +---pip.exe| +---pip3.10.exe | +---pip3.exe| +---python.exe| +---pythonw.exe
3.2 虚拟环境激活
windows系统中,执行Scripts目录下的activate.bat
脚本,即可激活虚拟环境:
D:\devWorkspace\PythonProject\venvDemo> venv\Scripts\activate
(venv) D:\devWorkspace\PythonProject\venvDemo>
(venv) D:\devWorkspace\PythonProject\venvDemo> python
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import sys
>>> sys.path
['', 'D:\\tools\\python310\\python310.zip', 'D:\\tools\\python310\\DLLs', 'D:\\tools\\python310\\lib', 'D:\\tools\\python310', 'D:\\devWorkspace\\PythonProject\\venvDemo\\venv', 'D:\\devWorkspace\\PythonProject\\venvDemo\\venv\\lib\\site-packages']
括号中的venv是虚拟环境的名称。
激活虚拟环境后,就可以在当前的环境中进行包管理、执行脚本了。在当前虚拟环境使用pip安装的包会安装到D:\\devWorkspace\\PythonProject\\venvDemo\\venv\\lib\\site-packages
目录下。
3.3 虚拟环境去激活
执行Scripts目录下的deactivate.bat
脚本即可退出当前虚拟环境:
(venv) D:\devWorkspace\PythonProject\venvDemo> venv\Scripts\deactivate
D:\devWorkspace\PythonProject\venvDemo>
4 python包管理
4.1 pip包管理工具
python标准库包含一些基础的python模块,但为了提高python编程效率,一般会使用python第三方库。
python中通常使用pip包管理工具进行python包管理,可对python库进行安装、升级、卸载等操作。本文使用的python3.10.11标准发行版本中默认安装了pip。
如果你的python发行版本没有安装pip,可以使用get-pip.py
脚本安装,可到这里https://bootstrap.pypa.io/下载,然后执行如下命令安装:
$ python get-pip.py
第三方Python包托管在pypi存储库中:https://pypi.org/。
4.2 包安装
4.2.1 在线安装
使用pip install package_name
命令安装,默认情况下会安装当前python版本支持的最新的包版本,也可以指定版本:pip install package_name==3.0.0
,执行安装命令后,会到pypi存储库中下载包并自动安装。比如安装requests包:
$ pip install requests
Collecting requestsUsing cached requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting charset-normalizer<4,>=2 (from requests)Using cached charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl.metadata (34 kB)
Collecting idna<4,>=2.5 (from requests)Downloading idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting urllib3<3,>=1.21.1 (from requests)Using cached urllib3-2.2.1-py3-none-any.whl.metadata (6.4 kB)
Collecting certifi>=2017.4.17 (from requests)Using cached certifi-2024.2.2-py3-none-any.whl.metadata (2.2 kB)
Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Using cached certifi-2024.2.2-py3-none-any.whl (163 kB)
Using cached charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl (100 kB)
Downloading idna-3.7-py3-none-any.whl (66 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 113.2 kB/s eta 0:00:00
Using cached urllib3-2.2.1-py3-none-any.whl (121 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2024.2.2 charset-normalizer-3.3.2 idna-3.7 requests-2.31.0 urllib3-2.2.1
也可以使用requirements.txt
文件来批量安装文件中的包,比如requirements.txt
文件内容为:
click==8.1.7
Flask==3.0.2
执行如下命令安装:
$ pip install -r requirements.txt
如果你的环境提示多次重试无法安装,可能原因的默认使用的是国外的官方的pypi源,网络原因无法下载,可以使用国内镜像源:
https://pypi.tuna.tsinghua.edu.cn/simple
http://pypi.douban.com/simple
http://mirrors.aliyun.com/pypi/simple
https://mirrors.bfsu.edu.cn/pypi/web/simple/
可在安装时指定源,如果不行,其它源都可尝试下。
$ pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
4.2.2 离线安装
工作中的开发环境通常无法联网,需要离线安装。可以在有网的环境将包下载下来然后进行离线安装。
到pypi存储库中:https://pypi.org/中搜索下载要安装的库,主义有些库需要根据你的系统环境下载指定版本。
比如下载requests包:
通常有两种方式安装,一种是源码安装,第二种是下载whl文件安装。如果有whl文件,建议直接下载whl文件安装。有些包没有提供whl文件,需要下载源码文件进行编译安装。
whl文件安装方法:
$ pip install requests-2.31.0-py3-none-any.whl
源码文件编译安装方法为:解压后,进入根目录(包含setup.py
文件),执行如下命令安装:
$ python setup.py install
4.3 包卸载
可使用pip uninstall package_name
命令卸载已安装的包:
$ pip uninstall requests
Found existing installation: requests 2.31.0
Uninstalling requests-2.31.0:Would remove:d:\devworkspace\pythonproject\venvdemo\venv\lib\site-packages\requests-2.31.0.dist-info\*d:\devworkspace\pythonproject\venvdemo\venv\lib\site-packages\requests\*
Proceed (Y/n)? ySuccessfully uninstalled requests-2.31.0
4.4 包升级
可使用--upgrade
对已安装的包进行升级,比如升级pip:
$ python -m pip install --upgrade pip
# 或者
$ pip install --upgrade pip$ pip list | findstr pip
pip 24.0
4.5 包查看
1、在命令行窗口执行pip list
或者python -m pip list
命令可查看当前python环境安装的所有包。
比如在前面创建的虚拟环境中执行pip list
:
(venv) D:\devWorkspace\PythonProject\venvDemo> pip list
Package Version
------------------ --------
blinker 1.7.0
certifi 2024.2.2
charset-normalizer 3.3.2
click 8.1.7
colorama 0.4.6
Flask 3.0.2
idna 3.7
itsdangerous 2.1.2
Jinja2 3.1.3
MarkupSafe 2.1.5
pip 24.0
setuptools 65.5.0
urllib3 2.2.1
Werkzeug 3.0.2
2、可使用-o,--outdated
列出过时的包,使用-u,--uptodate
列出版本最新的包:
(venv) D:\devWorkspace\PythonProject\venvDemo>pip list -o
Package Version Latest Type
---------- ------- ------ -----
Flask 3.0.2 3.0.3 wheel
setuptools 65.5.0 69.5.1 wheel(venv) D:\devWorkspace\PythonProject\venvDemo>pip list -u
Package Version
------------------ --------
blinker 1.7.0
certifi 2024.2.2
charset-normalizer 3.3.2
click 8.1.7
colorama 0.4.6
idna 3.7
itsdangerous 2.1.2
Jinja2 3.1.3
MarkupSafe 2.1.5
pip 24.0
urllib3 2.2.1
Werkzeug 3.0.2
3、使用pip show package_name
命令可查看包的相关信息:
(venv) D:\devWorkspace\PythonProject\venvDemo>pip show click
Name: click
Version: 8.1.7
Summary: Composable command line interface toolkit
Home-page: https://palletsprojects.com/p/click/
Author:
Author-email:
License: BSD-3-Clause
Location: d:\devworkspace\pythonproject\venvdemo\venv\lib\site-packages
Requires: colorama
Required-by: Flask
4.6 生成依赖包列表文件
可使用pip freeze
命令列出已安装的软件包,生成Python项目的依赖库文档requirements.txt
:
$ pip freeze > requirements.txt
如果在python项目全局环境里直接使用 pip freeze > requirements.txt
会导出大量与该项目无关的依赖,pip freeze
命令会把你当前 python 环境的所有包都导出来了。可以采用pipreqs导出仅当前项目所需的依赖包:
$ pip install pipreqs
在项目的根目录下输入命令:
pipreqs ./ --encoding=utf8
会在根目录下生成requirements.txt文件,仅包含当前python项目依赖的库。
4.7 包下载及安装
一般在环境迁移中会用到包下载功能,使用pip download
命令下载当前python环境的包文件。
使用pip freeze
或者pipreqs
命令获取到依赖包列表文件后,可以使用使用pip download
命令下载包文件:
$ pip download -d /usr/local/pythonlibs -r requirements.txt
-d
参数指定包文件保存路径。
下载完成后,复制包文件和requirements.txt文件到要安装的离线环境中,执行如下命令批量安装:
$ pip install --no-index --find-links=/usr/local/pythonlibs -r /usr/local/pythonlibs/requirements.txt
--no-index
表示忽视默认的依赖包索引--find-links=
表示从指定的目录寻下找离线包
也可以单个安装,比如安装requests库:
$ pip install --no-index --find-links=/usr/local/pythonlibs requests
参考文档:
-
PyPI · The Python Package Index
-
anaconda清华大学开源软件镜像站地址:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
-
Welcome to Python.org
-
Python3 在线工具 | 菜鸟工具 (jyshare.com)
-
Python - Environment Setup (tutorialspoint.com)