Msys2:维护两个Python安装

3
我正在使用Win 10下的Msys2便携版。 我有两个Python 3.8安装。原问题问是否如此。现在我确定是这样,所以暂时想处理它们的维护。
我还发了另一个相关的问题Msys2: readline in two python installations
我在下面发布了有关两者的信息。
我的问题是:
  1. 它们是否会相互干扰? 如果是,我应该采取哪些步骤/配置?(PYTHONPATH, site-packages,等等)
  2. 删除其中任何一个是否安全,而不破坏另一个? 对我来说,下面的依赖关系似乎意味着没有风险,但我不确定这是否足以回答这个问题。
  3. 哪一个是最好的? 我的意思是使用numpypandas,gcc-toolchain和通过Eclipse CDT调试器以及其他许多软件包。
PS1: 除此之外还有python2,对于它们也要应用同样的问题。
PS2: 我觉得很奇怪的一点是,即使版本都是3.8.2,可用的子版本也不完全相同。
PS3: 这两个Python很可能是从这个“ play”的主角升级而来,Python 3.8(之前是3.8.1)升级到mingw-w64-x86_64-python 3.8.2-2和Python 3.7升级到python 3.8.2-1


提供Python软件包的软件包

$ pacman -Sl | grep "python " | grep "installed"
mingw64 mingw-w64-x86_64-python 3.8.2-2 [installed]
msys python 3.8.2-1 [installed]

每个模块的附加信息(依赖关系等)

$ pacman -Qi mingw-w64-x86_64-python
Name            : mingw-w64-x86_64-python
Version         : 3.8.2-2
Description     : A high-level scripting language (mingw-w64)
Architecture    : any
URL             : https://www.python.org/
Licenses        : PSF
Groups          : None
Provides        : mingw-w64-x86_64-python3=3.8.2
Depends On      : mingw-w64-x86_64-gcc-libs  mingw-w64-x86_64-expat  mingw-w64-x86_64-bzip2  mingw-w64-x86_64-libffi  mingw-w64-x86_64-mpdecimal
                  mingw-w64-x86_64-ncurses  mingw-w64-x86_64-openssl  mingw-w64-x86_64-sqlite3  mingw-w64-x86_64-tcl  mingw-w64-x86_64-tk  mingw-w64-x86_64-zlib
                  mingw-w64-x86_64-xz
Optional Deps   : None
Required By     : mingw-w64-x86_64-gdb  mingw-w64-x86_64-glib2  mingw-w64-x86_64-gtest  mingw-w64-x86_64-mono  mingw-w64-x86_64-postgresql
                  mingw-w64-x86_64-python-apipkg  mingw-w64-x86_64-python-appdirs  mingw-w64-x86_64-python-atomicwrites  mingw-w64-x86_64-python-attrs
                  mingw-w64-x86_64-python-cairo  mingw-w64-x86_64-python-colorama  mingw-w64-x86_64-python-contextlib2  mingw-w64-x86_64-python-cycler
                  mingw-w64-x86_64-python-defusedxml  mingw-w64-x86_64-python-imagesize  mingw-w64-x86_64-python-importlib-metadata  mingw-w64-x86_64-python-iniconfig
                  mingw-w64-x86_64-python-jdcal  mingw-w64-x86_64-python-kiwisolver  mingw-w64-x86_64-python-lxml  mingw-w64-x86_64-python-more-itertools
                  mingw-w64-x86_64-python-numpy  mingw-w64-x86_64-python-olefile  mingw-w64-x86_64-python-ordered-set  mingw-w64-x86_64-python-packaging
                  mingw-w64-x86_64-python-pathlib2  mingw-w64-x86_64-python-pillow  mingw-w64-x86_64-python-pluggy  mingw-w64-x86_64-python-py
                  mingw-w64-x86_64-python-pyparsing  mingw-w64-x86_64-python-pytest  mingw-w64-x86_64-python-pytz  mingw-w64-x86_64-python-scandir
                  mingw-w64-x86_64-python-seaborn  mingw-w64-x86_64-python-setuptools  mingw-w64-x86_64-python-sip  mingw-w64-x86_64-python-six
                  mingw-w64-x86_64-python-wcwidth  mingw-w64-x86_64-python-zipp  mingw-w64-x86_64-vapoursynth
Optional For    : mingw-w64-x86_64-vtk
Conflicts With  : mingw-w64-x86_64-python3  mingw-w64-x86_64-python2<2.7.16-7
Replaces        : mingw-w64-x86_64-python3
Installed Size  : 112.87 MiB
Packager        : Alexey Pavlov <alexpux@gmail.com>
Build Date      : Thu, Apr 9, 2020 10:17:39 AM
Install Date    : Wed, Apr 22, 2020 10:04:36 AM
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

$ pacman -Qi python
Name            : python
Version         : 3.8.2-1
Description     : Next generation of the python high-level scripting language
Architecture    : i686
URL             : https://www.python.org/
Licenses        : custom
Groups          : None
Provides        : python3
Depends On      : libbz2  libexpat  libffi  liblzma  ncurses  libopenssl  libreadline  mpdecimal  libsqlite  zlib
Optional Deps   : None
Required By     : gdb  python3-appdirs  python3-attrs  python3-pip  python3-pyparsing  python3-six  scons
Optional For    : None
Conflicts With  : None
Replaces        : python3
Installed Size  : 47.27 MiB
Packager        : Alexey Pavlov <alexpux@gmail.com>
Build Date      : Thu, Apr 16, 2020 12:31:48 PM
Install Date    : Wed, Apr 22, 2020 10:15:54 AM
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

提供Python2的软件包

$ pacman -Sl | grep "python2 " | grep "installed"
mingw64 mingw-w64-x86_64-python2 2.7.18-1 [installed: 2.7.17-2]
msys python2 2.7.18-1 [installed: 2.7.17-1]

你应该决定使用其中一个。哪一个更好,我不能说,这可能并不重要,或者是一个特定于操作系统的选择(我没有使用msys的经验)。然后,你应该确保PYTHONPATH没有指向另一个安装路径。实际上,你可以将PYTHONPATH留空,除非你需要包含一些特殊的搜索路径。对于查找内置模块,这是不必要的。关于(2),删除其中一个而不影响另一个应该是安全的。因此,我建议的第一步是选择其中一个安装程序并删除另一个,然后检查PYTHONPATH - a_guest
@a_guest - 为什么你说我应该选择其中一个呢? 我知道这样更容易,但我不知道为什么这样行不通。 如果你有具体的原因使得这个方案不可行,请告诉我。 - sancho.s ReinstateMonicaCellio
我没有特定的原因,但我也碰巧没有使用MSYS的经验,所以我不知道安装这些软件包意味着什么(即在幕后实际上发生了什么)。也许它会调整PYTHONPATH以满足其需要,复制一些文件,修改PATH等。这只是试错,看看是否是软件包相互干扰。只要您没有遇到任何错误,那么保留它们两个肯定没有问题。 - a_guest
@a_guest - 我知道这些安装不会修改PATHPYTHONPATH。 我可以获取提供的文件列表。 但是我遇到了错误... - sancho.s ReinstateMonicaCellio
这就是为什么我建议删除其中一个软件包。然后检查问题是否仍然存在。如果没有问题,那就好了。如果您想重新安装该软件包,至少您知道要关注什么(即安装执行的任何操作都会干扰其他Python)。如果没有进行这样一点点的实验,我认为很难更接近解决方案。 - a_guest
1个回答

2

我在MSYS2 shell中使用了两个不同版本的Python(版本2和3)。

我的做法如下:

  • 没有一个Python路径被包含在PATH环境变量中,所以如果需要Python,它会失败。
  • 当需要Python时,我在需要它的命令之前加上PATH=<python_path>:$PATH(例如:PATH=/D/Prog/Python/WinPython-64bit-2.7.13.1Zero/python-2.7.13.amd64:$PATH make),或者如果该命令支持在环境中设置PYTHON,则在命令之前加上PYTHON=<python_path>/python.exe。在某些情况下,如果Makefileconfigure接受一个PYTHON变量,也可以在make命令之后添加PYTHON=<python_path>/python.exe
  • 如果Python想要加载某些模块,还可能需要设置PYTHONPATH变量(例如:PYTHONPATH=<python_path>/Lib/site-packages

这对我很有效,总是迫使我选择使用哪个Python。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接