将 pyimport 升级到 python3

将 pyimport 升级到 python3

我在 Ubuntu 20.04 上使用 VS Code。我读到 Ubuntu 20.04 仅支持 python3。当我尝试运行 python3 代码时,它给出了一个语法错误,但我相信这是因为其中一个依赖项使用的是 python2.7。这是我收到的错误,指出 {prg}' 后的单引号语法无效。有没有办法升级消息中引用的 pyimport 包,还是我这里遗漏了其他东西?

================================ test session starts ================================
platform linux2 -- Python 2.7.18rc1, pytest-4.6.9, py-1.8.1, pluggy-0.13.0
rootdir: /home/ryan/tiny_python_projects/01_hello
collected 0 items / 1 errors                                                        

====================================== ERRORS =======================================
_____________________________ ERROR collecting test.py ______________________________
/usr/lib/python2.7/dist-packages/_pytest/python.py:507: in _importtestmodule
    mod = self.fspath.pyimport(ensuresyspath=importmode)
/usr/lib/python2.7/dist-packages/py/_path/local.py:701: in pyimport
    __import__(modname)
E: File "/home/ryan/tiny_python_projects/01_hello/test.py", line 21
E: out = getoutput(f'python3 {prg}')

答案1

Ubuntu 20.04 默认未安装 Python 2.7,但可以从终端安装。打开终端并输入:

sudo apt update
sudo apt install --install-suggests python2.7 python-pip python-pytest

从 Ubuntu 20.04 以上版本的 Ubuntu 中,python-pytest 已从默认 Ubuntu 存储库中删除。

对于 Python 3.x:

sudo apt install python3-pip python3-pytest

例子

第一个文件是应该测试的文件。

斐波那契数列(fibonacci.py):

def fib(n):
    old, new = 0, 1
    for _ in range(n):
        old, new = new, old + new
    return old

该文件将被“pytest”用于测试 fibonacci.py:

测试斐波那契数:

from fibonacci import fib
def test_fib():
    assert fib(0) == 0
    assert fib(1) == 1
    assert fib(10) == 55

将目录更改为cd包含 fibonacci.py 和 test_fibonacci.py 的目录。

pytest的结果:

============================= test session starts ==============================
platform linux2 -- Python 2.7.17, pytest-3.3.2, py-1.5.2, pluggy-0.6.0
rootdir: /home/karel/Desktop, inifile:
collected 1 item                                                               

test_fibonacci.py .                                                      [100%]

=========================== 1 passed in 0.04 seconds ===========================

示例代码来源:Python 教程:使用 Pytest 进行测试

答案2

我认为我的 pip 安装得有点笨拙。我删除了 python2、pip、pip2、pip2.7 和 pylint。然后我重新安装了所有内容,并确保它适用于 python 3,现在一切正常。感谢您的帮助!

相关内容