1 Python虚拟环境和项目管理
Pip管理虚拟环境
Python从3.3版本开始,自带虚拟环境配置包venv
。虚拟环境下通过pip
命令下载的Python包不会影响到系统中的Python,可以做到项目之间环境的分离(目前Pycharm
新建环境默认使用这种方式)。
创建环境
py -m venv environ # Windows
python -m venv environ # Linux
上述命令创建虚拟环境environ
。
激活环境
- Windows:首先进入
Scripts
文件夹:cd environ/Scripts
。然后,激活环境:./activate
- Linux:首先进入
bin
文件夹:cd environ/bin
。然后,激活环境:source activate # bash下使用该命令,对于其他shell解释器例如fish等,请参考bin目录下其他相应文件
之后进入虚拟环境:
(environ) ...\environ\Scripts>
在其中可以使用pip
下载处理。
退出环境
deactivate
Pipenv管理虚拟环境
pipenv
基于Pipfile
记录依赖,自动管理Python虚拟环境。
pip install pipenv
可以通过pipenv --version
判断是否安装成功。
创建环境
pipenv install
此命令将在项目目录下生成文件Pipfile
和Pipfile.lock
,并自动生成虚拟环境;如果项目文件夹下已有Pipfile
(例如从Github上拉下来的项目),该命令将同步下载Pipfile
中的所有依赖项。在Linux系统中,虚拟环境文件夹默认放在~/.local/share/virtualenvs/
文件夹下,命名方式默认为项目名-随机字符串
。
pipenv可以指定虚拟环境的Python版本:
pipenv --python 3.10
激活环境
pipenv shell
退出环境
exit
删除环境
pipenv --rm
请注意,删除环境后不会自动退出虚拟环境。
使用pipenv
- 获取虚拟环境位置:
pipenv --venv
。 - 获取项目位置:
pipenv --where
。 - 安装包到虚拟环境:
pipenv install 包名
。 - 从虚拟环境卸载包:
pipenv uninstall 包名
。 - 获取已安装包信息:
pipenv graph
。
Poetry管理项目
Poetry
是一个现代可扩展的Python依赖和版本管理器,下载方式:
pip install poetry
创建项目
创建空项目
poetry new <project-name>
创建<project-name>
文件夹,并初始化为Hatch
结构的项目:
<project-name>
├── pyproject.toml
├── README.md
├── <project-name>
│ └── __init__.py
└── tests
└── __init__.py
用Poetry管理已有项目
poetry init
创建环境
poetry install
默认将在~/.cache/pypoetry/virtualenvs/
下创建虚拟环境(见poetry-config
的virtualenvs.path
)。如果想在当前项目文件夹下创建虚拟环境,则执行
poetry config virtualenvs.in-project true
该命令将在当前项目文件夹下建立隐藏文件夹.venv
。
激活环境
poetry shell
退出环境
exit
或者
Ctrl+d
。
删除环境
poetry env remove --all
依赖项管理
添加依赖项
poetry add <deps>
将依赖项<deps>
添加到pyproject.toml
中并下载到虚拟环境。
通过本地文件(例如
.whl
)下载:poetry add /my-package-0.1.0.tar.gz poetry add /my-package-0.1.0.whl
更新依赖项
poetry update
更新poetry.lock
文件中的依赖项为最新版。如果其后跟依赖包名,则只更新提供的依赖。
poetry update requests
将只更新requests
包。
删除依赖项
poetry remove <deps>
显示当前已下载的依赖项
poetry show
维护项目
- 获取虚拟环境信息
poetry env info
- 获取当前项目版本
poetry version
- 更新当前项目版本
poetry version <new-version> # 例如:poetry version "0.1.0"
- 打包
poetry build
- 发布
poetry publish
配置
- 显示配置
poetry config --list
- 修改配置
可修改的配置见available-settings。poetry config (<options>) <setting-key> <setting-values>
关于Python无法直接引用上层文件的处理方法
在虚拟环境的site-packages
文件夹下新建任意文件名的文件:<filename>.pth
,其内容为项目文件夹的绝对路径,例如:
/home/user/bearpipy/Projects/HelloWorld
在文件夹
site-packages
下,应该已经具有文件_virtualenv.pth
。
在Python文件中,按照HelloWorld
文件夹的下一级文件为起点定位导入文件,例如HelloWorld
下有文件夹HelloWorld/views
和HelloWorld/utils
,则应该形如
from views.··· import ···
from utils.··· import ···