Python环境管理
python 使用 Pipenv 管理环境¶
Pipenv = pyenv(管理python版本) + pip(管理依赖) + virtualenv(提供虚拟环境),整合起来,以获得良好的体验。
pip 是 Python 的包管理器;virtualenv 是虚拟环境,为你的创建虚拟的rootfs,为 shell 设置各种环境变量,可以在这个环境中用 pip 安装依赖;Pipfile 是 lock 文件,用于代替 requirements.txt。
https://pipenv.pypa.io/en/latest/
使用它的理由:
- 帮做了一些额外的事,比如工程级别指定源
- 和 pip 命令兼容,无学习成本的环境、依赖管理
安装:
$ pip install --user pipenv
或者安装时指定源
$ pipenv install --pypi-mirror https://mirrors.ustc.edu.cn/pypi/web/simple
项目使用:
$ cd project
$ pipenv install
直接在环境中运行命令
$ pipenv run python
或者可以让整个shell进入环境
$ pipenv shell
添加依赖,不应像 virtualenv 里直接用 pip 添加,而是用 pipenv 命令:
$ pipenv install requests
$ pipenv install requests~=1.2
$ pipenv install -r requirements.txt
关于 pipfile 和 pipfile.lock 的建议:
- Generally, keep both Pipfile and Pipfile.lock in version control.
- Do not keep Pipfile.lock in version control if multiple versions of Python are being targeted.
- Specify your target Python version in your Pipfile’s [requires] section. Ideally, you should only have one target Python version, as this is a deployment tool. python_version should be in the format X.Y and python_full_version should be in X.Y.Z format.
更多细节可以查看pipenv --man
遇到的问题¶
termios.error: (25, 'Inappropriate ioctl for device')
:不应该在 docker 环境中用pipenv shell
Warning: Python 3.9 was not found on your system... Neither 'pyenv' nor 'asdf' could be found to install Python.
:可以安装 pyenv;或者,如果对python版本不敏感,可以将 Pipfile 中的 python 版本删掉,并将 Pipfile.lock 从版本管理中删除
Gitlab CI 中,只能缓存工程目录下面的文件,需要让 venv 在功能目录内:export PIPENV_VENV_IN_PROJECT="enabled"
python 的 pyenv 管理多个 python 版本¶
安装,有脚本:
$ curl https://pyenv.run | bash
$ echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc
脚本会使用 github 源,国内网络问题,没代理环境,想顺利使用可以换镜象,替换:
if [ -n "${USE_GIT_URI}" ]; then
GITHUB="git://github.com.cnpmjs.org"
else
GITHUB="https://github.com.cnpmjs.org"
fi
python的virtualenv使用¶
已有更好的代替品 pipenv
安装:
$ pip3 install virtualenv
使用:
$ mkdir myproject
$ virtualvir ./myproject
$ cd myproject
$ source ./bin/active
在vscode中使用virtualenv环境:
- 打开命令菜单(一般是Ctrl+Shift+P),输入
Python: Select Interpreter
- 找到由virtualenv创建的
bin/python
- 详情参考vscode的文档:Using Python environments in VS Code
python的venv使用¶
已有更好的代替品 pipenv
$ python -m venv venv $ source venv/bin/activate $ pip install --upgrade pip