我正在运行 Debian bullseye/sid,最近更新到 Debian 不稳定版,以尝试使用 Sway 窗口管理器。一切都很顺利,直到我更新到较新版本的 python。我的 python3 当前版本是 3.7.4。
自更新以来,我无法再导入 pipenv 或 pip,并且缺少一些其他全局包。
$ pipenv shell
Traceback (most recent call last):
File "/home/user/.local/bin/pipenv", line 6, in <module>
from pipenv import cli
ModuleNotFoundError: No module named 'pipenv'
在 /usr/bin 中,我有 python2.7、python3.5 和 python3.7。Pip 已安装:“which pip”显示为“/usr/bin/pip”。我将 pipenv 安装为用户安装(pip install --user pipenv)。二进制文件已存在。
有人能给我指点一下如何最好地调查这个问题吗?
编辑:嗯,除了更新之外,我还更改了默认的 python 版本:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
这是不建议,而且,由于我几乎总是在 venvs 中工作,即使它如此麻烦,对我来说也没什么区别。假期前我会做一些愚蠢的事情 ¯\_(ツ)_/¯
答案1
我确信这应该是显而易见的,但下面的方法解决了这个问题。 apt 搜索返回两个版本的 pip。 我假设(但没有检查)我运行的系统范围的 python 版本是 3.x,因此忽略了以下内容。 通常,我大部分时间都在 venvs 中工作。
$ sudo apt-get install python3-pip
然后我重新安装了 pipenv 作为用户安装:
$ pip install --user pipenv
这使得我只能安装特定版本的 py3status 来满足依赖关系,因为 debian stable 超出了它:
$ pip install py3tatus==3.16
如果有更优雅或更 Python 的方式来做到这一点,我会很高兴听到它,但这似乎足够接近摇滚乐了。
编辑:请参阅上面的编辑以了解重要内容。
答案2
您是否更新了 pip 和/或 pipenv?由于您已更新到较新的版本,这可能意味着您的软件包也需要更新(以兼容)。尝试在pip
命令后添加版本号(例如pip3
我使用的 - )。在这些情况下,如果您使用pip
(因为它是较新的版本,所以您不会安装它,那么使用它来安装软件包将不起作用。无论哪种方式,您可能需要安装 pip3 或更新到它。