通过本章,你可以去思考这几个问题:
1、Python解释器和虚拟环境区别?
2、有哪些虚拟环境管理工具?
3、怎么通过虚拟环境安装和卸载模块?
4、如何管理和分发打包项目?
新建项目
默认使用通过新建虚拟环境,我们需要了解本地的python解释器和有什么不同?
虚拟环境是Python中的一个隔离机制,允许用户在不同项目之间创建隔离的Python运行环境。每个虚拟环境可以有自己的Python解释器版本和一组安装的库,这样就可以在不同项目中使用不同版本的库而互不干扰。虚拟环境对于管理项目依赖、避免版本冲突以及确保项目的可重复性非常重要。
注意:本地使用的python解释器安装的模块在虚拟环境是用不了
上面展示的是虚拟环境的管理工具:
(1)Virtualenv(默认安装Python即可)
是一个用于创建隔离的Python环境的工具。每个环境都可以有自己的安装目录,且与系统中的其他虚拟环境相互独立。主要特点:成熟且广泛使用,可以创建与Python版本无关的环境,需要手动管理依赖和包,适用于需要快速简单创建隔离Python环境的场景
(2)Pipenv(需要用pip进行安装)
将pip和virtualenv的功能结合起来,提供一个统一的工具来管理虚拟环境和项目依赖。主要特点:自动管理虚拟环境,使用Pipfile和Pipfile.lock来替代requirements.txt,提供更丰富的依赖管理功能,支持依赖的自动解析和锁定,增强了项目的可重复性,适用于希望简化和自动化依赖管理流程的项目
(3)Poetry(需要另外下载软件包安装)
是一个Python依赖管理和打包工具,旨在简化包的发布和依赖管理,主要特点:使用pyproject.toml来管理项目设置和依赖,符合PEP 518规范,支持依赖的精确控制和解析,适用于需要精细管理依赖和同时进行包开发的复杂项目
(4)Conda(需要另外下载软件包安装)
一个开源包管理器和虚拟环境管理器,可以用于安装、运行和更新包和环境,需要单独下载安装Anaconda(包含Conda、Python以及许多科学计算和数据科学领域常用包的发行版)或者Miniconda(一个更轻量级的Anaconda版本,它只包含Conda和Python,没有预装其他包)。它不仅限于Python,也支持其他语言。主要特点:支持跨平台(Linux、macOS、Windows),可以管理非Python的依赖,如库或工具,适用于数据科学、机器学习等领域,这些领域经常需要复杂的依赖管理,
点击确定后,项目会生成env目录,就是虚拟隔离环境隔离目录。后面通过pip安装的模块都放到env/Lib/site-packages
安装模块
在pycharm,可以通过Terminal终端来安装,用这个terminal安装,默认会激活该虚拟环境。
也可以通过一下命令来激活虚拟环境
# window环境
.\venv\Scripts\activate
#macOS/Linux
source venv/bin/activate安装虚拟环境的几种方式:
1、pip直接安装
- 安装最新版本:
pip install 模块- 安装指定版本:
pip install 模块==版本号- 安装指定pypi源:
解决默认pypi源下载慢的问题,使用-i命令
pip3.9 install 模块 -i https://pypi.douban.com/simple/如果报不信任问题,可以在后面增加 --trusted-host pypi.douban.com
- 永久指定pypi源:
pip config set global.index-url https://pypi.douban.com/simple/2、使用requirements安装
pip install -r requirements.txt这个方式也可以跟pip安装一样,指定pypi源
3、使用仓库安装
有可能安装的模块在pypi没有发布,需要从仓库下载,将仓库代码clone到当前项目目录
git clone 仓库URL
cd 克隆后的目录
python setup.py install4、使用wheel文件安装
pip install 文件名.whl5、使用conda安装
前提需要安装conda虚拟环境
conda install 模块6、使用pipenv安装
需要配置pipenv环境变量
pipenv install 模块7、使用poetry安装
poetry add 模块卸载模块
可以通过pip命令去卸载模块
pip uninstall 模块
# 不提示
pip uninstall 模块 -y管理和分发打包项目
做好项目模块版本管理是很重要的,可以方便管理项目元数据,如作者信息、项目描述、分类信息等,避免后续版本冲突,也有助于其他人了解和使用你的项目以及方便新同事使用。
1、生成requirements.txt文件
pip freeze > requirements.txt2、编写setup.py文件
在项目根目录新建setup.py文件,用于定义项目的元数据和配置信息,使得项目可以通过setuptools库安装
from setuptools import setup, find_packages
# 读取项目的长描述
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
# 读取项目的依赖列表
with open('requirements.txt') as f:
requirements = f.read().splitlines()
setup(
name="your_project_name", # 项目名称
version="0.0.1", # 项目版本
author="Your Name", # 作者名称
author_email="your.email@example.com", # 作者邮箱
description="A short description of the project", # 项目简短描述
long_description=long_description, # 项目的长描述,从README.md文件读取
long_description_content_type="text/markdown", # 长描述的内容类型
url="https://github.com/yourusername/your_project_name", # 项目URL
project_urls={ # 项目相关的额外链接
"Bug Tracker": "https://github.com/yourusername/your_project_name/issues",
},
classifiers=[ # 项目分类器
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
packages=find_packages(), # 自动发现项目中的包
python_requires=">=3.6", # Python的版本要求
install_requires=requirements, # 从requirements.txt文件读取的依赖列表
extras_require={ # 额外的依赖
"dev": ["check-manifest"],
"test": ["coverage"],
},
include_package_data=True, # 包含在版本控制系统中的数据文件
)后续从仓库里面下载代码后,可以运行setup.py安装项目所有依赖
python setup.py install