我买了一本关于Python网络安全的书,作者使用的是python 3.9版本。我一会儿就去dnf。我使用Fedora Linux 37,默认的linux是linux 3.11。
我设置了一个虚拟环境并尝试安装作者的“requirements.txt”包。该过程被阻塞,显然新版本的 python 无法处理逆行版本,例如 numpy (和其他包)。
所以我做了一些可能会受到批评的事情。我下载了python 3.9并编译并安装了它。看起来一切顺利。但后来我注意到“pip”和“dnf”都被破坏了。
皮普给我留言:
$ pip install --upgrade pip 找不到平台相关库 <exec_prefix> 考虑将 $PYTHONHOME 设置为 [:<exec_prefix>] 回溯(最近一次调用):文件“/usr/bin/pip”,第 7 行,来自pip._internal.cli.main import main ModuleNotFoundError:没有名为“pip._internal”的模块
在处理上述异常的过程中,又出现了一个异常:
回溯(最近一次调用最后一次):文件“/usr/bin/pip”,第10行,in from pip._internal.main import main ModuleNotFoundError:没有名为“pip._internal”的模块在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用最后一次):文件“/usr/bin/pip”,第 17 行,来自 pip._internal import main ModuleNotFoundError:没有名为“pip._internal”的模块
在处理上述异常的过程中,又出现了一个异常:
回溯(最近一次调用最后一次):文件“/usr/bin/pip”,第 20 行,来自 pip import main ImportError:无法从“pip”导入名称“main”(未知位置)
以及来自 dnf 的:
dnf安装wireshark
回溯(最近一次调用最后一次):文件“/usr/bin/dnf”,第 61 行,来自 dnf.cli import main ModuleNotFoundError:没有名为“dnf”的模块
现在,你可以说我很天真,但我认为虚拟环境的基本原理之一是能够在特定程序中使用不同的 python 版本。
至于我的dnf怎么了,我不知道,但我不知道如何修复它。
在此先感谢您的帮助。
布赖盖伊
答案1
好吧,我重新做了所有的符号链接,然后修复了 pip 和 dnf 的直接问题。您可能知道这一点,但编译 python 版本的影响之一是 /usr/bin(在 Fedora 上)中的符号链接得到更新,以便以前的 python 和 python3 指向 python 3.11;编译python3.9后,python和python3指向python 3.9。
我仍然认为虚拟环境的设计是为了让你可以在不同的项目中使用不同版本的 python,但我不知道如何实现这一点。例如,我将继续尝试使用 python 3.9 创建虚拟环境(如果我可以编译它或在二进制文件中找到它)。
但我仍然希望您能提供任何建议。
谢谢。