我正在 Python 3.11 的一个项目中使用 Poetry。任何带有
poetry run ...
的命令都可以正常工作,但在 PyCharm 中使用 Poetry 环境作为 Python 解释器时遇到问题。
当我使用 Python 控制台并尝试
import psycopg2
时,我得到了
ModuleNotFoundError:没有名为“psychopg2”的模块
在终端中运行
poetry run python -c "import psycopg2"
效果很好。 PyCharm 中配置的解释器是与我通过poetry env info -p
提取的 Poetry 环境对应的解释器。
有趣的是,当通过以下方式手动使用 Poetry 环境运行时:
/Users/richardknudsen/Library/Caches/pypoetry/virtualenvs/app-v-qyCfCG-py3.11/bin/python -c "import psycopg2"
我收到与处理器架构相关的错误:
导入错误: dlopen(/Users/richardknudsen/Library/Caches/pypoetry/virtualenvs/app-v-qyCfCG-py3.11/lib/python3.11/site-packages/psycopg2/_psycopg.cpython-311-darwin.so, 0x0002):尝试过: '/Users/richardknudsen/Library/Caches/pypoetry/virtualenvs/app-v-qyCfCG-py3.11/lib/python3.11/site-packages/psycopg2/_psycopg.cpython-311-darwin.so' (mach-o 文件,但是是一个不兼容的体系结构(有“x86_64”,需要 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/richardknudsen/Library/Caches/pypoetry/virtualenvs/app-v-qyCfCG-py3.11/lib/python3.11/site-packages/psycopg2/_psycopg.cpython- 311-达尔文.so' (没有这样的文件), '/Users/richardknudsen/Library/Caches/pypoetry/virtualenvs/app-v-qyCfCG-py3.11/lib/python3.11/site-packages/psycopg2/_psycopg.cpython-311-darwin.so' (mach-o 文件,但是是一个不兼容的体系结构(有“x86_64”,需要 ‘arm64’)
并非所有软件包都会出现这两个错误,例如导入
sqlalchemy
效果很好。
我觉得我在理解诗歌如何在 PyCharm 中正确设置它方面缺少一些拼图。
我自己从未使用过 PyCharm,但在使用诗歌时,我通常通过全局配置诗歌或在项目中使用以下
poetry.toml
文件来让诗歌在我的项目中创建虚拟环境:
[virtualenvs]
create = true
in-project = true
主要好处:在本地虚拟环境中,使用不支持诗歌的工具或者诗歌集成在寻找正确的 venv 时遇到问题时会更容易。如果一个工具不支持诗歌,它至少支持
.venv
文件夹中的本地 venv。