如果你关注过一些开源的python项目,一定会发现好多个项目都包含有一个叫做pyproject.toml
的文件
这个文件遵循PEP518,用来替代 requirements.txt
、setup.py
等配置文件。相关工具比较出名的有pipenv和poetry,相比于pipenv,我更喜欢poetry的设计,在这里简单介绍一下.
poetry的安装和使用都很简单,对于arch可以直接用下面的命令安装
sudo pacman -S python-poetry
具体用法可以点击前面的链接查看,下面来说一下一些小坑
工作中经常遇到的一个问题就是不同项目的python版本不统一,poetry并没有直接解决这个问题,而是借助了pyenv这个工具来实现python版本的切换,具体使用方法查看前面的链接即可.使用pyenv安装好指定的python版本以后,使用类似poetry env use 3.7
这样的命令即可切换python版本,具体方法可以查看poetry文档
使用poetry的另一个问题是大陆访问pypi速度太慢,在使用pip时,我们可以通过添加源来解决,尽管poetry也可以使用pip的镜像源下载,然而在分析包之间的依赖关系时似乎依然是走的pypi,要解决这个问题,我们可以在每个项目下的pyproject.toml
文件内写入配置文件,比如使用豆瓣源
[[tool.poetry.source]]
name = "douban"
url = "https://pypi.doubanio.com/simple"
default = true
目前来看这个设置还是有些麻烦的,而且有些脱离这个设置的本意,希望poetry在未来的更新中能加入一些优化吧
很不幸pycharm目前还不支持自动寻找poetry目录,我们能自己告诉pycharm解释器的位置,好在这个操作很简单.使用
poetry env info
可以得到如下输出
Virtual environment
Python: 3.7.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid: True
System
Platform: darwin
OS: posix
Python: /path/to/main/python
Pyth 就是虚拟环境所在的位置,我们在pycharm中选中这个解释器,
Settings (ctrl+alt+s) > Project > Python interpreter > “Add” > “Virtual Environement” > Existing environement > Three dots > 把pyth粘贴进去, 然后选中bin/python, 就可以使用啦.然而对于手动输入poetry run ...
来在虚拟环境中运行命令.
poetry管理本地环境,上线用docker,真香!