笔记本/脚本无法识别使用诗歌的项目包

2024-06-16 14:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里发布了一个关于诗歌的问题。我在他们的github中把它作为一个bug报告,但现在我不确定它是bug还是我不理解的东西

我正在尝试使用笔记本中的项目包或源代码文件夹外的一些脚本。我的项目结构如下:

├── notebooks
│   └── Untitled.ipynb
├── poetry.lock
├── pyproject.toml
├── scripts
│   ├── init.py
│   └── hello.py
├── source
│   ├── init.py
│   └── utils.py
├── tests
│   └── init.py
└── zip_project.py

如果我运行诗歌安装并尝试从源代码导入任何内容,无论是从笔记本还是从hello.py脚本,它都找不到源模块。如果我运行python脚本/hello.py,它可以工作,但它不应该是解决方案,因为它仍然不适用于笔记本电脑。我使用pyenv进行python版本管理,以防万一

签出this update at poetry's docs后,我尝试运行“poyment add./source/”,但出现以下错误:

TypeError

expected string or bytes-like object

at ~/.poetry/lib/poetry/vendor/py3.7/poetry/core/utils/helpers.py:27 in canonicalize_name
23│ canonicalize_regex = re.compile(r"[-]+")
24│
25│
26│ def canonicalize_name(name): # type: (str) -> str
→ 27│ return canonicalize_regex.sub("-", name).lower()
28│
29│
30│ def module_name(name): # type: (str) -> str
31│ return canonicalize_name(name).replace(".", "").replace("-", "")

编辑:我已经更新了pyproject.toml(gist),试图遵循Finswiller的建议,但每次运行更新时都会出现“目录{}似乎不是Python包”错误

编辑2:我发现,如果我的包是以pyproject.toml项目名命名的,并且删除了对它的任何其他引用,那么它就会被安装(也就是说,通过docs的标准方式)。顺便说一句,如果我试图通过编辑pyproject.toml或通过poetry add "./my_package/"的方式添加具有不同名称的包,我会得到"Directory {} does not seem to be a Python package"错误。为什么会发生这种情况


Tags: 项目namepy脚本编辑hellopoetryinit