使用Poetry从Git自动安装Python依赖项后安装

时间:2019-11-27 09:45:33

标签: python python-poetry

我将Poetry用于Python依赖项管理,并将PyCrate用于ASN.1编码/解码。

PyCrate是从GitHub提取的依赖项,一旦从GitHub提取,则通过在PyCrate目录中运行安装文件进行安装。

python setup.py install

如果可能的话,我想将安装步骤集成到我的pyproject.toml中。我当前的pyproject.toml包括以下PyCrate:

…
[tool.poetry.dependencies]
pycrate = {git = "https://github.com/P1sec/pycrate.git"}
…

这会将PyCrate从GitHub存储库中拉出,但会放入Poetry创建的virtualenv中的src文件夹中。

执行poetry install时,有什么方法可以自动运行安装脚本吗?我已经研究过使用Poetry scripts,但到目前为止还无法正常运行。

我当前的设置涉及运行poetry install,然后手动运行setup.py install for PyCrate,但是如果可以的话,我希望我的poetry install执行完整的设置

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

运行python setup.py install时,诗歌应该已经为您运行poetry install

诗歌基本上只运行pip install package,这会下载软件包,而实际上基本上只运行python setup.py install

  

在幕后,[pip]将运行python setup.py install

来源:https://stackoverflow.com/a/15732821/10149169

但是,诗歌仅将软件包安装在隔离的虚拟环境中,以避免污染计算机的其余部分。

要使用诗歌来创作某些东西,您需要使用poetry run YOUR_COMMAND

为了在虚拟环境中运行脚本,必须运行poetry shell才能进入虚拟环境,或者运行poetry run YOUR_COMMAND。例如。要运行Python脚本,您应该执行poetry run python your_python_script.py

示例

如果您的文件夹包含以下pyproject.toml文件:

[tool.poetry]
name = "test"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.6"
pycrate = {git = "https://github.com/P1sec/pycrate.git"}

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

运行poetry install后,您可以通过运行poetry run SCRIPT_NAME来访问所有pyrcrate脚本:

# works because pycrate_showmedia.py was installed with poetry install
me@computer:~/example-project$ poetry run poetry run pycrate_showmedia.py
usage: pycrate_showmedia.py [-h] [-bl BL] [-wt] input
pycrate_showmedia.py: error: the following arguments are required: input

如果您有一个导入pycrate库的Python文件,则还需要使用poetry run运行该文件:

me@computer:~/example-project$ cat test.py 
import pycrate_core
print(pycrate_core.__version__)
me@computer:~/example-project$ poetry run python test.py