虚拟机管理系统有哪些?vm虚拟机管理系统( 四 )

poetry add boto3就能添加依赖,poetry show --tree显示出依赖树 。看下如何安装及创建一个项目
$ pip install poetry
$ poetry new sample

它创建的项目比上面都简单
$ tree sample
sample
├── README.rst
├── pyproject.toml
├── sample
│ └── __init__.py
└── tests
├── __init__.py
└── test_sample.py

如果给poetry new带上--src参数,那么源文件目录sample会放在src目录下,即sample/src/sample.
poetry init会在当前目录中生成pyproject.toml文件,目录等的生成需手动完成 。
它不
pyproject.toml有些类似 NodeJS 的package.json文件,比如 poetry add, poetry install 命令的行
# 往 pyproject.toml 中添加对 boto3 的依赖并安装(add 还能从本地或 git 来安装依赖 ),
poetry add boto3

# 将依照 pyproject.toml 文件中定义安装相应的依赖到当前的 Python 虚拟环境中
# 比如在 <test-venv>/lib/python3.9/site-packages 目录中,安装好模块后也可让测试用例使用
poetry install

其他主要的
1. poetry build # 构建可安装的 *.whl 和 tar.gz 文件
2. poetry shell # 会根据定义在 pyproject.toml 文件中的依赖创建并使用虚拟环境
3. poetry run pytest # 运行使用 pytest 的测试用例,如 tests/test_sample.py
4. poetry run python -m unittest tests/sample_tests.py # 运行 unittest 测试用例
5. poetry export --without-hashes --output requirements.txt # 导出 requirements.txt 文件, --dev 导出含 dev 的依赖,或者用 poetry export --without-hashes > requirements.txt

poetry run能执行任何系统命令,只是它会在它要的虚拟环境中执行 。所以可以想见,poetry的项目要生成文档或覆盖率都必须用poetry run ...命令来支持sphinx,coverageflake8
在 sample 目录(与 pyproject.toml 文件平级)中创建文件my_module.py, 内容为
def main:
print('hello poetry')

然后在pyproject.toml中写上
[tool.poetry.scripts]
my-script="sample.my_module:main"

再执行
$ poetry run my-script

就会输出 "hello poetry" 。
通过对以上四个工具的认识,项目结构的复杂度由 cookiecutter-pyproject -> PyScaffold -> PyBuilder -> Poetry 依次降低,使用的难度大略也是相同的顺序 。
参考链接

  1. Set up tests, linters and type checking in Python projects in 2020 (https://medium.com/@cristobalcl/set-up-tests-linters-and-type-checking-in-python-projects-in-2020-9cc1b1e2750d) (介绍了 poetry 项目如何支持 coverage, lint 和 type checking)
  2. Dependency management tools for Python (https://snyk.io/blog/dependency-management-tools-python/)
链接:https://yanbin.blog/python-dependency-management-build-tools

推荐阅读