1 python virtualenv python-3.x python-poetry
我是诗歌新手,我有一个问题,在网上找不到太多有关信息。我的诗歌应该创建一个 python 3.9 的虚拟环境,它做到了。这是我从命令中得到的poetry env info:
Virtualenv
Python: 3.9.10
Implementation: CPython
Path: /home/..../.venv
Valid: True
System
Platform: linux
OS: posix
Python: /usr
Run Code Online (Sandbox Code Playgroud)
当我输入poetry shellthen时python,我确实进入了 python 3.9,并且能够导入已安装的软件包。但这是奇怪的部分。当我尝试检查已安装的软件包之一时,我得到的结果如下:
>>> import XXX.python_utils as utils
>>> utils
<module 'XXX.python_utils' from '/home/X/.local/lib/python3.9/site-packages/XXX/python_utils/__init__.py'>
Run Code Online (Sandbox Code Playgroud)
我的机器上确实安装了实际的 python 3.9,但 Poetry 应该在 virtualenv 中安装该包,而不是实际的 python3.9 site_packages,对吗?然后我尝试在我的机器上安装 python 3.9 而不是虚拟环境,包仍然可以导入。结果与上面相同。
然后我仔细检查了里面的东西.venv/lib/python3.9/site-packages,里面基本上什么都没有。我发现的是一些带有包名称并以.dist-info. 我不确定那是什么。
我也尝试which python过poetry shell,这就是我得到的:
(.venv) XXX@XXX:~/XXX$ which python
/home/.../.venv/bin/python
Run Code Online (Sandbox Code Playgroud)
看来诗歌确实在 venv 中使用了 python 3.9
最后,每次我运行 a 时poetry install,它都会安装所有软件包,即使我没有更改我的任何内容pyproject.yaml,这似乎poetry.lock没有任何意义。
你可以尝试:
poetry env remove python
poetry config virtualenvs.in-project true
Run Code Online (Sandbox Code Playgroud)
然后在项目文件夹中执行以下命令:
poetry shell
poetry add your_lib
poetry install
Run Code Online (Sandbox Code Playgroud)
诗歌env remove python将清理你的全局 python 环境,而诗歌配置 virtualenvs.in-project true将告诉诗歌只在你的项目文件夹中创建 .venv。
| 归档时间: |
|
| 查看次数: |
12662 次 |
| 最近记录: |