一款让Python开发效率提升50%的工具包
Posted Python数据科学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一款让Python开发效率提升50%的工具包相关的知识,希望对你有一定的参考价值。
关注上方“Python数据科学”,选择星标,
关键时间,第一时间送达!
pip
安装第三方包时,所有的依赖都会安装到安装目录下的
site-packages
。
v0.1
。但是,开发B工程,需要用到TensorFlow
v0.2
。这时候,site-packages下的依赖包就会产生冲突,后面安装的依赖包就会把前面已经安装的版本卸载掉然后再安装新版本依赖包。
pip
和
virtualenv
。
-
需要同时依赖2款管理工具 -
不能动态更新requirements.txt
pip freeze > requirements.txt
命令。很明显,这样是非常不合理的。试想一下,如果由于忙碌忘记手动执行这项操作,那么费九牛二虎之力部署到生产环境之后发现报错,这样会造成很大的损失。
pipenv
就诞生了。
pipenv
-
Lock速度缓慢 -
强行更新不相干依赖 -
依赖处理效果较差
$ pipenv install oslo.utils==1.4.0
Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0
poetry
pyproject.toml
来完成依赖管理、环境配置、基本信息配置等功能。相当于把Python项目中的
Pipfile
、
setup.py
、
setup.cfg
、
requirements.txt
、
MANIFEST.in
融合到一起。
pyproject.toml
文件,不仅可以配置依赖包,还可以用于区分开发、测试、生产环境、配置源路径。
为什么选择poetry?
-
更强大的依赖处理功能 -
易于打包和构建Python工程 -
易于发布工具包 -
结构化展示依赖关系
$ poetry add oslo.utils=1.4.0
- Installing pytz (2018.3)
- Installing netifaces (0.10.6)
- Installing netaddr (0.7.19)
- Installing oslo.i18n (2.1.0)
- Installing iso8601 (0.1.12)
- Installing six (1.11.0)
- Installing babel (2.5.3)
- Installing pbr (0.11.1)
- Installing oslo.utils (1.4.0)
pbr (>=0.6,!=0.7,<1.0)
这个限定条件时,它会尝试去安装最新的pbr(0.11.1版),同时会选择
oslo.i18n==3.20.0
,但是,这时候发现
oslo.i18n
的版本和pbr最新版本冲突。如果在pipenv中则会报错。但是poetry会尝试找出解决方案,最后发现
oslo.i18n==2.1.0
时可以满足所有相互依赖关系的要求。最终,成功安装依赖包。
setup.py
、
setup.cfg
。而在poetry中,一行命令就可以解决,
$ poetry build
Building poetry (1.0.0)
- Building sdist
- Built poetry-1.0.0.tar.gz
- Building wheel
- Built poetry-1.0.0-py2.py3-none-any.whl
pyproject.toml
,就可以实现一行命令发布工具包,
$ poetry publish
Publishing poetry (1.0.0) to PyPI
- Uploading poetry-1.0.0.tar.gz 100%
- Uploading poetry-1.0.0-py2.py3-none-any.whl 58%
$ poetry show --tree
requests-toolbelt 0.8.0 A utility belt for advanced users...
└── requests <3.0.0,>=2.0.1
├── certifi >=2017.4.17
├── chardet >=3.0.2,<3.1.0
├── idna >=2.5,<2.7
└── urllib3 <1.23,>=1.21.1
$ poetry show --latest
pendulum 2.0.4 1.4.5 Python datetimes made easy.
django 1.11.11 2.0.3 A high-level Python Web framework ...
requests 2.18.4 2.18.4 Python HTTP for Humans.
如何使用poetry?
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
$ pip install --user poetry
$ poetry new poetry-demo
poetry-demo
├── pyproject.toml
├── README.rst
├── poetry_demo
│ └── __init__.py
└── tests
├── __init__.py
└── test_poetry_demo.py
$ poetry init
ENTER
键使用默认值。
-
安装依赖包
$ poetry add numpy
--dev
来区分不同环境下的依赖包。
pyproject.toml
的依赖包,
$ poetry install
-
更新依赖包
$ poetry update
$ poetry update numpy
-
卸载依赖包
$ poetry remove numpy
-
创建虚拟环境
virtualenvs.create=true
,执行
poetry install
时会检查是否有虚拟环境,否则会自动创建。
poetry env use
命令,
$ poetry env use python3.7
-
激活虚拟环境
$ poetry shell
-
查看虚拟环境信息
$ poetry env info
-
显示虚拟环境列表
$ poetry env list
-
删除虚拟环境
$ poetry env remove python3.7
结语
- 完 -
特别推荐 特别推荐:一个优质的推荐Github开源项目的公众号「GitHuboy」,每天给大家分享前沿、优质的项目,涉及 Java、Python、Go、Web前端、AI、数据分析等多个领域,非常值得大家关注。 回复「Java学习」获得 1024G Java学习资料 回复「Python学习」获得 100G Python学习资料
以上是关于一款让Python开发效率提升50%的工具包的主要内容,如果未能解决你的问题,请参考以下文章