从 python 2.7 升级到 3.7 时的诗歌和 python 版本错误

man*_*222 5 upgrade python-2.7 python-3.x python-poetry

我已经开始学习自学 Python。该项目在我的 mac 上启动,安装版本为 python 2.7。在朋友的建议下,我安装了诗歌来进行依赖处理。这非常有效。

不久之后,我意识到 python 2.7 是多么过时并尝试升级。我是通过自制软件做到的,这似乎打破了很多。 python --versoin仍然显示 2.7,虽然我可以调用python3 --version并查看正确的我的项目似乎仍然停留在 2.7 上,即使#!/usr/bin/env python3是在文件的顶部。更糟糕的是poetry up,在项目中执行不会升级我的 python 依赖项并更改 pyproject.toml 中的该值会阻止一切。我有一个依赖似乎在此过程中已经损坏,但无法对损坏的诗歌/python 版本进行任何处理。错误在下面的诗中。

所以从顶部开始,我如何开始使用正确版本的python?

我的 bash_profile 有

PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)
poetry install

[EnvCommandError]                                                                           
Command ['/Users/username/Library/Caches/pypoetry/virtualenvs/PyGameEngine-py2.7/bin/python', '-'] errored with the following return code -6, and output:           
dyld: Library not loaded: @executable_path/../.Python                                                    
  Referenced from: /Users/username/Library/Caches/pypoetry/virtualenvs/PyGameEngine-py2.7/bin/python  
  Reason: image not found                                                                                
input was : import sys                                                                                   
if hasattr(sys, "real_prefix"):                                                                          
    print(sys.real_prefix)                                                                               
elif hasattr(sys, "base_prefix"):                                                                        
    print(sys.base_prefix)                                                                               
else:                                                                                                    
    print(sys.prefix)                     
Run Code Online (Sandbox Code Playgroud)

Har*_*oli 0

从这里复制我的答案


有趣的是,由于该工具本身所依赖的软件包丢失,诗歌正在默默地失败,并继续安装损坏的 venv。以下是修复方法。

sudo apt install python3-venv
poetry env remove python3
poetry install
Run Code Online (Sandbox Code Playgroud)

我必须删除 pytest,然后使用poetry add pytest.

编辑:当将项目从 python3.7 升级到 python3.8时,我再次遇到了这个问题 - 为此而不是安装python3-venv,你需要安装python3.8-venv


如果您仍然遇到问题(即升级您的软件包以兼容 python3,您可能需要看看这个答案