编辑:最优雅的解决方案可以在这里找到:
我找到了一个解决方案,结合了这个答案并更改了PYTHONPATH
我的两个配置文件:
/home/user/.bashrc
/home/user/.bash_profile
命名法:初始(较低的)python 版本将由3.x表示,较新的版本由3.y 表示。
关于先前修改的必要性的注意PYTHONPATH
事项:
就我而言,由于python
以各种方式和位置安装了许多 -versions,因此需要将目标sitepackage 目录添加到整个PYTHONPATH
.python
通过python -m pip install --user -r packages_python_3_x.txt
.
如果在您的系统上,这些PYTHONPATH
点直接指向所需的站点包,即它们位于整个 PYTHONPATH 的第一个位置,则无需修改它。此外,如果您正在使用虚拟环境(例如pyenv)或其他环境管理器,您将能够自动分离与每个虚拟环境关联的每个站点包。那么,应该也不需要修改PYTHONPATH
. 相比之下,我没有使用虚拟、本地和全局 python 环境,这就是为什么我有必要将感兴趣的站点包目录添加到PYTHONPATH
. 现在,我正在为不同的项目使用虚拟环境,我向大家推荐。
1.) 准备 PYTHONPATH(如果需要)
继续上述配置文件,在其中插入以下行:
PYTHONPATH="/home/linuxbrew/.linuxbrew/lib/python3.x/site-packages:$PYTHONPATH"
如果有类似的行指向以前的 python-version 目录,请根据您的情况将其替换为最新的行(例如3.7
,3.8
在目录路径中)。
此外,如果 system python3
-path 附加到PYTHONPATH
, 注释中,则注释掉,以便为您的 python 分发(无论是homebrew
、anaconda
或任何您喜欢的)提供优先级。
# NOTE on the following commando: it is commented out on purpose (you could also delete it from the config-files, if you don't consider to use these site-packages again, but I kept it for playing safe)
#export PYTHONPATH="/usr/lib/python3/dist-packages:$PYTHONPATH"
为了使更改立即生效,请在您的 UNIX 终端中执行以下命令:
source /home/user/.bash_profile
source /home/user/.bashrc
2.) 提取当前安装的模块并使用新版本 3.y 重新安装它们
最后,将所有python
安装的包解压到一个文本文件中。就我而言,这是用 完成的pip
,所以这将是:
python -m pip freeze --path /home/linuxbrew/.linuxbrew/lib/python3.x/site-packages > packages_python_3_x.txt
文本文件应包含如下行:
absl-py==0.11.0
access==1.1.1
affine==2.3.0
aiohttp==3.7.2
aiohttp-cors==0.7.0
...
最后,(重新)将所有这些包安装到最新的站点包文件夹中(这里使用完成pip
):
python -m pip install --user -r packages_python_3_x.txt
包管理器 pip 应该选择正确的文件夹,因为您之前已经更新PYTHONPATH
过。此示例中的新站点包目录应为/home/linuxbrew/.linuxbrew/lib/python3.y/site-packages
.