首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我新创建的python包将名称中的_替换为-

我新创建的python包将名称中的_替换为-
EN

Stack Overflow用户
提问于 2022-09-02 16:58:02
回答 1查看 70关注 0票数 2

我已经使用setuptools创建了我的第一个python包。从我的包目录的顶层运行python -m build似乎可以使包很好,并且包文件是按预期在dist中创建的。但是,当我安装包时,安装的包的名称被-所取代,这使得导入python文件几乎是不可能的。

这是我的目录布局:

代码语言:javascript
运行
复制
(venv) cunninwe@MBLS015 dpu2 % tree /Users/cunninwe/Documents/dpu2
/Users/cunninwe/Documents/dpu2
├── Dockerfile
├── LICENSE
├── README.md
├── dist
│   ├── myorg_devops_utils-0.0.1-py3-none-any.whl
│   └── myorg_devops_utils-0.0.1.tar.gz
├── pyproject.toml
├── requirements.txt
├── src
│   ├── devops_python_utils_package
│   │   ├── __init__.py
│   │   ├── file0.py
│   │   ├── file1.py
│   │   ├── file2.py
│   │   ├── file3.py
│   │   ├── fileA.py
│   │   ├── file4.py
│   │   ├── file5.py
│   │   ├── file6.py
│   │   ├── file7.py
│   │   ├── fileB.py
│   │   ├── rcfile.rc
│   │   ├── file8.py
│   │   ├── file9.py
│   │   └── file10.py
│   └── myorg_devops_utils.egg-info
│       ├── PKG-INFO
│       ├── SOURCES.txt
│       ├── dependency_links.txt
│       └── top_level.txt
├── tests
│   ├── test_file1.py
│   ├── test_file2.py
│   ├── test_file3.py
│   ├── test_file4.py
│   ├── test_file5.py
│   ├── test_file6.py
│   ├── test_file7.py
│   └── test_file8.py
└── venv

我的pyproject.toml文件如下:

代码语言:javascript
运行
复制
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "myorg_devops_utils"
version = "0.0.1"
authors = [
    { name="me", email="me@myorg.com" },
]
description = "Python utilities used by DevOps team"
readme = "README.md"
license = { file="LICENSE" }
requires-python = ">=3.9"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]

我是从这个结构的根运行python -m build的。然后切换到dist子目录,并运行whl文件的pip安装。

代码语言:javascript
运行
复制
(venv) cunninwe@MBLS015 dist % python -m pip install myorg_devops_utils-0.0.1-py3-none-any.whl
Processing ./myorg_devops_utils-0.0.1-py3-none-any.whl
Installing collected packages: myorg-devops-utils
Successfully installed myorg-devops-utils-0.0.1

环境: Mac

所以:

  1. 为什么会发生这种事?
  2. ,我怎样才能让它消失,这样我才能真正使用包中的文件?

我试过使用importlib.import_module('myorg-devops-utils'),但这也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-02 21:03:01

真正的问题是您的顶级导入包是devops_python_utils_package (而不是您所期望的myorg_devops_utils,它是您的分发包的名称)。所以你需要import devops_python_utils_package

导入包和导入模块的名称不应该更改。如果他们这么做了,那就真的出了问题。另一方面,发行包的名称可以将其下划线_替换为-,它们在package生态系统中是等价的(一种是规范形式)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73585854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档