到目前为止,我在我的计算机上主要使用 Ubuntu 16.04 LTS,几周前我在一个空闲分区上安装了 Ubuntu 18.04 LTS。
现在我将/home/juergen
目录从 16.04 分区转移到新的 18.04 分区(我保留默认的单分区方案),操作如下
- 将旧的(16.04)分区挂载到新的分区上
/mnt
,然后 cd /mnt/home
- 正在
tar -cvzf /home/jb.tgz juergen
把所有旧$HOME
东西打包放进去jb.tgz
。 - 最后我做到
cd /home
了tar -xvzf jb.tgz
(尽管这些信息与我的问题没有直接关系,但我添加这些信息只是为了“设置背景”)
现在我实际的问题是:我的主目录中有一个大型的 python 虚拟环境,我曾经从中运行 jupyter-lab 和其他应用程序:
juergen@regulus:~/venv/python3sci$ ls
bin etc include lib lib64 man pip-selfcheck.json pyvenv.cfg share software
juergen@regulus:~/venv/python3sci$ cat pyvenv.cfg
home = /usr/bin
include-system-site-packages = false
version = 3.5.2
但我不能再使用它了:
juergen@regulus:~/venv/python3sci$ cd bin
juergen@regulus:~/venv/python3sci/bin$ . activate
(python3sci) juergen@regulus:~/venv/python3sci/bin$ jupyter-lab
Traceback (most recent call last):
File "/home/juergen/venv/python3sci/bin/jupyter-lab", line 5, in <module>
from jupyterlab.labapp import main
ModuleNotFoundError: No module named 'jupyterlab'
(python3sci) juergen@regulus:~/venv/python3sci/bin$ pip -V
Traceback (most recent call last):
File "/home/juergen/venv/python3sci/bin/pip", line 7, in <module>
from pip._internal.main import main
ModuleNotFoundError: No module named 'pip'
(python3sci) juergen@regulus:~/venv/python3sci/bin$ pip3 -V
Traceback (most recent call last):
File "/home/juergen/venv/python3sci/bin/pip3", line 7, in <module>
from pip._internal.main import main
ModuleNotFoundError: No module named 'pip'
(python3sci) juergen@regulus:~/venv/python3sci/bin$
虚拟环境中的 python 和 pip 条目bin
(python3sci) juergen@regulus:~/venv/python3sci/bin$ ls -la python*
lrwxrwxrwx 1 juergen juergen 7 Nov 10 2019 python -> python3
lrwxrwxrwx 1 juergen juergen 16 Nov 10 2019 python3 -> /usr/bin/python3
(python3sci) juergen@regulus:~/venv/python3sci/bin$ ls -la pip*
-rwxrwxr-x 1 juergen juergen 245 Nov 10 2019 pip
-rwxrwxr-x 1 juergen juergen 245 Nov 10 2019 pip3
-rwxrwxr-x 1 juergen juergen 245 Nov 10 2019 pip3.5
我花了很多时间在 Google 上查找上述错误信息,但没有找到对我的情况有帮助的答案。
问题:那么我该怎么做才能让我的虚拟环境重新运转起来?
(如果您需要我的系统的更多输出,我会根据需要在这个问题中对其进行编辑)。
提前谢谢了!
新信息:以下问题
正好适合我的问题。似乎不可能指望通过一些神奇的 Python 调用进行简单的升级,因为(那里说的)python3.5(16.04 标准)和 python3.6(18.04 中的新标准)甚至不再是二进制兼容的。
因此,建议的解决方案是创建pip freeze > req.txt
(在我的 16.04 安装中的运行虚拟环境中)所需软件包的列表req.txt
,然后pip install -r req.txt
(在 18.04 安装中新创建的虚拟环境中)重新安装所有必要的依赖项。
它对我而言 99% 效果良好,只有我最追捧的项目pymesh
我现在无法重新编译 - 它有大量的依赖项,并且它的用户手册没有提供单独使用 pip 安装的工作流程,所以我预料到了等待的麻烦。