din*_*ino 18 python virtualenv python-poetry
我刚刚从 过渡到pipenv,poetry并且在从我在一些脚本中开发的本地包导入包时遇到问题。为了使这一点更具体,我的项目看起来像:
pyproject.toml
poetry.lock
bin/
myscript.py
mypackage/
__init__.py
lots_of_stuff.py
Run Code Online (Sandbox Code Playgroud)
之内myscript.py,我import mypackage。但是当我poetry run bin/myscript.py得到一个时ModuleNotFoundError,因为PYTHONPATH不包括该项目的根。有了pipenv,我可以通过PYTHONPATH=/path/to/project/root在.env文件中指定来解决这个问题,该文件将在运行时自动加载。导入带有诗歌的本地包的正确方法是什么?
我遇到了这篇关于使用环境变量的文章,但export POETRY_PYTHONPATH=/path/to/roject/root似乎没有帮助。
mms*_*viu 24
将本地包(正在开发中)添加到另一个项目可以如下完成:
poetry add ./my-package/
poetry add ../my-package/dist/my-package-0.1.0.tar.gz
poetry add ../my-package/dist/my_package-0.1.0.whl
Run Code Online (Sandbox Code Playgroud)
如果您希望以可编辑模式安装依赖项,可以在 pyproject.toml 文件中指定它。这意味着本地目录的更改将直接反映在环境中。
[tool.poetry.dependencies]
my-package = {path = "../my/path", develop = true}
Run Code Online (Sandbox Code Playgroud)
在当前的预览版本 (1.2.0a) 中,引入了命令行选项,以避免上述手动步骤:
poetry add --editable /path/to/package
Run Code Online (Sandbox Code Playgroud)
添加包的其他方法可以在诗歌添加页面找到
如果上述方法不起作用,您可以查看本讨论中详细介绍的其他步骤
din*_*ino 13
经过更多的谷歌搜索后,我偶然发现了pyproject.toml 文件的tool.poetry 部分中的 packages 属性。要在分发中包含本地包,您可以指定
# pyproject.toml
[tool.poetry]
# ...
packages = [
{ include = "mypackage" },
]
Run Code Online (Sandbox Code Playgroud)
现在这些包已以可编辑模式安装:)