我尝试/测试我在“游乐场脚本”中编写的Python代码。
通常我不会保留这些游乐场脚本,但最近我发现保存它们以供长期使用有一些价值。所以我决定创建一个单独的
我有一个处于活动状态的 conda 环境
myproject
。
我的工作文件夹如下所示:
~/x
__init__.py
something.py
~/x/playground
playscript.py
我想将
something.py
导入到 playscript.py
中。我使用 Jupyter 将 playscript.py
作为交互式窗口运行。
如果我尝试相对导入
something.py
,则会失败:
{
"name": "ImportError",
"message": "attempted relative import with no known parent package",
"stack": "---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
File ~/x/playground/playscript.py:1
----> 1 from .. import something
ImportError: attempted relative import with no known parent package"
}
conda develop
(截至 2024 年 6 月)不是解决方案:弃用或删除 condadevelopment。读完这篇文章后,似乎有很多人建议:
pip install --no-build-isolation --no-deps -e .
假设我对
~/x/something.py
进行更改,或者添加全新的模块...我需要再次pip install --no-build-isolation --no-deps -e .
吗?如果是这样,那么这不是一个好的解决方案。
另请参阅相关内容:“开发”模式?第695章
(有些东西仍然不起作用,因为我的自动完成功能找不到相关模块,也无法以交互模式导入它)
建议的
pip
命令上的相关标志是 -e
: https://stackoverflow.com/a/35064498/3486684
请注意,必须在
pyproject.toml
下创建一个简单的 ~/x
:
[project]
name = "x"
authors = [{ name = "Your Name", email = "[email protected]" }]
version = "0.1.0"
requires-python = ">=3.11"
dependencies = []
[project.optional-dependencies]
dev = []
否则,
pip
会抱怨周围没有setup.py
或pyproject.toml
。