为什么诗歌构建会引发 ModuleOrPackageNotFound 异常?
Why does poetry build raise ModuleOrPackageNotFound exception?
我想用poetry来构建和分发Python源码包,但是在poetry init
之后我得到一个错误运行 poetry build
.
ModuleOrPackageNotFound
No file/folder found for package mdspliter.tree
原因
找不到的原因多半是目录层次不对
发布的包不直接是源码文件夹,里面有很多版本控制、测试、依赖管理等最终包不需要的东西
你应该把这个与包同名的文件夹作为一个包放在那个文件夹中。
解决方案
- 更改目录层次结构,以便在 folder.for 示例中存在具有相应名称的包:
D:\GitRepository\python_distribution\temp\tree
├──_init__.py
├──tree.py
├──pyproject.toml
└──README.rst
↓
D:\GitRepository\python_distribution\temp\tree
├──tree
│ ├──__init__.py
│ └──tree.py
├──pyproject.toml
└──README.rst
- 在
pyproject.toml
中指定文件夹
packages = [
{ include = "your_folder_as_pack" }
]
变体
如果项目的名称是mdspliter.tree
,那么包含文件夹mdspliter.tree
根本没有用,因为这个命名方案不符合规范,如果你使用poetry new mdspliter.tree
,你会发现文件夹的名字其实应该是mdspliter_tree
.
(在1.2版本中,此行为已更改为生成多层文件夹,mdsplitter/tree
)
选项 1:
我使用自己的树目录结构创建了我的项目,以使其与其他项目保持一致。所以,我尝试用
创建一个新项目
$ poetry new project-new
在 project-new
中创建了程序包 project-new
现在将您的文件放入新树中。
现在运行
$ poetry build
以上命令将自动创建一个 dist 文件夹 tar 并将 whl 文件放入其中。
选项 2:
如上述答案所述,请将您的包名称包含在 pyproject.toml 文件中。
packages = [
{ include = "package_name" },
]
我想用poetry来构建和分发Python源码包,但是在poetry init
之后我得到一个错误运行 poetry build
.
ModuleOrPackageNotFound
No file/folder found for package mdspliter.tree
原因
找不到的原因多半是目录层次不对
发布的包不直接是源码文件夹,里面有很多版本控制、测试、依赖管理等最终包不需要的东西
你应该把这个与包同名的文件夹作为一个包放在那个文件夹中。
解决方案
- 更改目录层次结构,以便在 folder.for 示例中存在具有相应名称的包:
D:\GitRepository\python_distribution\temp\tree
├──_init__.py
├──tree.py
├──pyproject.toml
└──README.rst
↓
D:\GitRepository\python_distribution\temp\tree
├──tree
│ ├──__init__.py
│ └──tree.py
├──pyproject.toml
└──README.rst
- 在
pyproject.toml
中指定文件夹
packages = [
{ include = "your_folder_as_pack" }
]
变体
如果项目的名称是mdspliter.tree
,那么包含文件夹mdspliter.tree
根本没有用,因为这个命名方案不符合规范,如果你使用poetry new mdspliter.tree
,你会发现文件夹的名字其实应该是mdspliter_tree
.
(在1.2版本中,此行为已更改为生成多层文件夹,mdsplitter/tree
)
选项 1: 我使用自己的树目录结构创建了我的项目,以使其与其他项目保持一致。所以,我尝试用
创建一个新项目$ poetry new project-new
在 project-new
中创建了程序包 project-new现在将您的文件放入新树中。
现在运行
$ poetry build
以上命令将自动创建一个 dist 文件夹 tar 并将 whl 文件放入其中。
选项 2: 如上述答案所述,请将您的包名称包含在 pyproject.toml 文件中。
packages = [
{ include = "package_name" },
]