6

使用 Python setuptools 安装后脚本

正是这个问题,但有诗歌,没有设置工具。

我想跑

print('Installation finished, doing other things...')

当我的包安装时。使用 Setuptools 您可以只修改setup.py,但在 Poetry 中特别没有setup.py.

我真正想做的是生成一个默认.mypackage_config文件并将其放在有用的地方。如果没有任意代码,我看不到如何做到这一点,但是 Poetry不允许安装任意代码。有没有办法做到这一点?

4

1 回答 1

5

目前不可能(并且可能永远不会)

诗歌的整个想法是可以在不运行任何 Python 代码的情况下安装一个包。因此,自定义安装后脚本可能永远不会存在(来自诗歌作者,您在问题中提供的链接)。

你可以做什么

您可以使用 setuptools 并修改setup.py脚本,但通过删除对默认配置文件的需要,可能更容易删除对安装后脚本的需要。

大多数 Python 工具,例如black,倾向于采用默认配置参数,除非配置文件(例如pyproject.toml文件)中有设置覆盖它们,例如:

[tool.black] # specifies this next section is the config for black
line-length = 88 # changes some configuration parameters from the defaults
target-version = ['py36', 'py37']

Jupyter 有一个命令jupyterhub --generate-config来生成默认配置文件(source)。

如果您的包是一个库,而不是命令行工具,即您通过import在 Python 代码中使用它来使用它,我建议您只将配置作为参数传递给构造函数/函数,因为这是标准的将配置传递给库。

例如,查看PySerial 的 API。您可以通过将 args 传递给构造函数来配置库serial.Serial,例如:

import serial
with serial.Serial(
    '/dev/ttyUSB0', # first config param, the port
    19200, # second config param, the baudrate
    timeout=5, # sets the timeout config param
) as ser:
于 2020-01-27T12:57:29.503 回答