我将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
执行完整的设置
任何帮助,将不胜感激。
答案 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