我正在努力学习如何用诗歌包装脚本,以便以后通过pip安装。
下面是一个最小的pyproject.toml
示例
name = "scripttest"
version = "0.1.0"
description = ""
authors = []
packages = [
{ include = "src" }
]
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.scripts]
scripttest = 'src.scripttest:main'
存储库具有以下结构
├── pyproject.toml
├── README.md
└── src
├── importantimport.py
└── scripttest.py
scripttest.py
只有一个导入语句和一个打印语句
from importantimport import data
def main():
print(data)
而importantimport.py
中包含一个列表
data = [0, 1, 0, 1]
运行python src/scripttest.py
将产生预期的输出
[0, 1, 0, 1]
,但一旦通过pip install .
安装,运行scripttest
将返回ModuleNotFoundError: No module named 'importantimport'
,尽管importantimport.py
就在~/.local/lib/python3.10/site-packages/src
中的旁边。
如何确保在pip安装后导入在本地工作?
谢谢。
发布于 2022-10-03 13:51:43
我想你会想
from scripttest.importantimport import data
这是因为importantimport
是随库打包的,scripttest
发布于 2022-10-03 13:51:29
删除以下几行:
packages = [
{ include = "src" }
]
您的项目没有包,只有单独的模块。诗歌的默认发现模式将找到importantimport.py
文件。
更改这些行:
[tool.poetry.scripts]
scripttest = 'src.scripttest:main'
这方面:
[tool.poetry.scripts]
scripttest = 'scripttest:main'
https://stackoverflow.com/questions/73941031
复制相似问题