最近几天,我在研究python模块。到目前为止,我在许多其他项目中都使用poetry
作为软件包管理工具,但这是我第一次希望将软件包发布到PyPI。
我能够运行poetry build
和poetry publish
命令。我还能够安装已发布的软件包:
$ pip3 install git-profiles
Collecting git-profiles
Using cached https://files.pythonhosted.org/packages/0e/e7/bac9027effd1e34a5b5718f2b35c0b28b3d67f3809e2f2981b6c7b58963e/git_profiles-1.1.0-py3-none-any.whl
Installing collected packages: git-profiles
Successfully installed git-profiles-1.1.0
但是,在安装之后,我无法运行我的软件包:
$ git-profiles --help
git-profiles: command not found
我的项目具有以下结构:
git-profiles/
├── src/
│ ├── commands/
│ ├── executor/
│ ├── git_manager/
│ ├── profile/
│ ├── utils/
│ ├── __init__.py
│ └── git_profiles.py
└── tests
我尝试在pyproject.toml文件中使用不同的脚本配置,但是安装后我再也无法使其正常工作。
[tool.poetry.scripts]
poetry = "src:git_profiles.py"
或
[tool.poetry.scripts]
git-profile = "src:git_profiles.py"
我不知道这是否是python / pip路径/版本问题,还是我需要更改配置文件中的内容。
答案 0 :(得分:2)
诗歌的scripts
部分环绕setuptools
的{{3}}。因此,入口点名称和您为其指定的调用路径必须遵循完全相同的规则。
简而言之,控制台脚本或多或少地在shell中执行此操作:
import my_lib # the module isn't called src, that's just a folder name
# the right name to import is whatever you put at [tool.poetry].name
my_lib.my_module.function()
如果给定名称my-lib-call
(名称可以与您的模块相同,但不必如此),则会这样写:
[tool.poetry.scripts]
my-lib-call = "my_lib.my_module:function"
根据您的项目结构,应执行以下操作:
[tool.poetry.scripts]
git-profile = "git-profiles:main"