我将编辑放在最上面,因此读者不需要找到当前状态。
这是与中提到的两个 python 安装相关的特定问题Msys2:维护两个 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]
EDIT #2:
很明显,readline
下面引用的不是python包,而是shell的。
至于readline
对于python来说,每个包提供的文件有
$ pacman -Ql python | grep readline
python /usr/lib/python3.8/lib-dynload/readline.cpython-38-i386-msys.dll
python /usr/lib/python3.8/lib2to3/fixes/fix_xreadlines.py
python /usr/lib/python3.8/test/test_readline.py
$ pacman -Ql mingw-w64-x86_64-python | grep readline
mingw-w64-x86_64-python /mingw64/lib/python3.8/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-38.opt-1.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-38.opt-2.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-38.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/lib2to3/fixes/fix_xreadlines.py
mingw-w64-x86_64-python /mingw64/lib/python3.8/test/__pycache__/test_readline.cpython-38.opt-1.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/test/__pycache__/test_readline.cpython-38.opt-2.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/test/__pycache__/test_readline.cpython-38.pyc
mingw-w64-x86_64-python /mingw64/lib/python3.8/test/test_readline.py
So, 为什么包里有 pythonmingw-w64-x86_64-python
没有找到readline
(见下文),有办法解决这个问题吗?与包中的 python 进行比较python
, 其中有readline
可用的。
$ python3.8 <-- This is /usr/bin/python3.8, from msys python
Python 3.8.2 (default, Apr 16 2020, 15:31:48)
[GCC 9.3.0] on msys
Type "help", "copyright", "credits" or "license" for more information.
Reading /home/RY16205/.pythonrc
readline is in /usr/lib/python3.8/lib-dynload/readline.cpython-38-i386-msys.dll
>>>
$ /mingw64/bin/python3.8.exe <-- From mingw64 python. Have to call it with full path, otherwise msys python is run
Python 3.8.2 (default, Apr 9 2020, 13:17:39) [GCC 9.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Reading C:/Users/RY16205/Documents/appls_mydocs/PortableApps/MSYS2Portable/App/msys32/home/RY16205/.pythonrc
Module readline not available.
Traceback (most recent call last):
File "C:/Users/RY16205/Documents/appls_mydocs/PortableApps/MSYS2Portable/App/msys32/home/RY16205/.pythonrc", line 42, in <module>
del os, atexit, readline, rlcompleter, save_history, historyPath
NameError: name 'readline' is not defined
>>>
======TL;DR======
EDIT #1
重新安装的详细输出如下所示。
下面还给出了每个包提供的文件列表。
值得注意的是导入时符号之间的(明显)不匹配msys readline
:
readline is in /usr/lib/python3.8/lib-dynload/readline.cpython-38-i386-msys.dll
事实上,这个文件不是由包提供的msys readline
,如下所列。
此外,它似乎是由msys python
,
$ pacman -Qo readline.cpython-38-i386-msys.dll
error: No package owns readline.cpython-38-i386-msys.dll
$ pkgfile.exe readline.cpython-38-i386-msys.dll
msys/python
尽管这之间进一步的不匹配pkgfile
and pacman -Qo
值得另一个问题。
重新安装mingw-w64-x86_64-readline
$ pacman -S -v mingw-w64-x86_64-readline
Root : /
Conf File : /etc/pacman.conf
DB Path : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/
Hook Dirs : /usr/share/libalpm/hooks/ /etc/pacman.d/hooks/
Lock File : /var/lib/pacman/db.lck
Log File : /var/log/pacman.log
GPG Dir : /etc/pacman.d/gnupg/
Targets : mingw-w64-x86_64-readline
warning: mingw-w64-x86_64-readline-8.0.004-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Packages (1) mingw-w64-x86_64-readline-8.0.004-1
Total Installed Size: 1.56 MiB
Net Upgrade Size: 0.00 MiB
:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring [###########################################################] 100% (1/1) checking package integrity [###########################################################] 100% (1/1) loading package files [###########################################################] 100% (1/1) checking for file conflicts [###########################################################] 100% (1/1) checking available disk space [###########################################################] 100% :: Processing package changes...
(1/1) reinstalling mingw-w64-x86_64-readline [###########################################################] 100%
每个包提供的文件列表
$ pacman -Ql mingw-w64-x86_64-readline
mingw-w64-x86_64-readline /mingw64/
mingw-w64-x86_64-readline /mingw64/bin/
mingw-w64-x86_64-readline /mingw64/bin/libhistory8.dll
mingw-w64-x86_64-readline /mingw64/bin/libreadline8.dll
mingw-w64-x86_64-readline /mingw64/include/
mingw-w64-x86_64-readline /mingw64/include/readline/
mingw-w64-x86_64-readline /mingw64/include/readline/chardefs.h
mingw-w64-x86_64-readline /mingw64/include/readline/history.h
mingw-w64-x86_64-readline /mingw64/include/readline/keymaps.h
mingw-w64-x86_64-readline /mingw64/include/readline/readline.h
mingw-w64-x86_64-readline /mingw64/include/readline/rlconf.h
mingw-w64-x86_64-readline /mingw64/include/readline/rlstdc.h
mingw-w64-x86_64-readline /mingw64/include/readline/rltypedefs.h
mingw-w64-x86_64-readline /mingw64/include/readline/tilde.h
mingw-w64-x86_64-readline /mingw64/lib/
mingw-w64-x86_64-readline /mingw64/lib/libhistory.a
mingw-w64-x86_64-readline /mingw64/lib/libhistory.dll.a
mingw-w64-x86_64-readline /mingw64/lib/libreadline.a
mingw-w64-x86_64-readline /mingw64/lib/libreadline.dll.a
mingw-w64-x86_64-readline /mingw64/lib/pkgconfig/
mingw-w64-x86_64-readline /mingw64/lib/pkgconfig/readline.pc
mingw-w64-x86_64-readline /mingw64/share/
mingw-w64-x86_64-readline /mingw64/share/doc/
mingw-w64-x86_64-readline /mingw64/share/doc/readline/
mingw-w64-x86_64-readline /mingw64/share/doc/readline/CHANGES
mingw-w64-x86_64-readline /mingw64/share/doc/readline/INSTALL
mingw-w64-x86_64-readline /mingw64/share/doc/readline/README
mingw-w64-x86_64-readline /mingw64/share/info/
mingw-w64-x86_64-readline /mingw64/share/info/history.info.gz
mingw-w64-x86_64-readline /mingw64/share/info/readline.info.gz
mingw-w64-x86_64-readline /mingw64/share/info/rluserman.info.gz
mingw-w64-x86_64-readline /mingw64/share/man/
mingw-w64-x86_64-readline /mingw64/share/man/man3/
mingw-w64-x86_64-readline /mingw64/share/man/man3/history.3.gz
mingw-w64-x86_64-readline /mingw64/share/man/man3/readline.3.gz
mingw-w64-x86_64-readline /mingw64/share/readline/
mingw-w64-x86_64-readline /mingw64/share/readline/excallback.c
mingw-w64-x86_64-readline /mingw64/share/readline/fileman.c
mingw-w64-x86_64-readline /mingw64/share/readline/hist_erasedups.c
mingw-w64-x86_64-readline /mingw64/share/readline/hist_purgecmd.c
mingw-w64-x86_64-readline /mingw64/share/readline/histexamp.c
mingw-w64-x86_64-readline /mingw64/share/readline/manexamp.c
mingw-w64-x86_64-readline /mingw64/share/readline/rl-callbacktest.c
mingw-w64-x86_64-readline /mingw64/share/readline/rl-fgets.c
mingw-w64-x86_64-readline /mingw64/share/readline/rl.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlbasic.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlcat.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlevent.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlkeymaps.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlptytest.c
mingw-w64-x86_64-readline /mingw64/share/readline/rltest.c
mingw-w64-x86_64-readline /mingw64/share/readline/rlversion.c
$ pacman -Ql libreadline
libreadline /usr/
libreadline /usr/bin/
libreadline /usr/bin/msys-history8.dll
libreadline /usr/bin/msys-readline8.dll
libreadline /usr/share/
libreadline /usr/share/doc/
libreadline /usr/share/doc/readline/
libreadline /usr/share/doc/readline/CHANGES
libreadline /usr/share/doc/readline/INSTALL
libreadline /usr/share/doc/readline/README
libreadline /usr/share/info/
libreadline /usr/share/info/history.info.gz
libreadline /usr/share/info/readline.info.gz
libreadline /usr/share/info/rluserman.info.gz
libreadline /usr/share/man/
libreadline /usr/share/man/man3/
libreadline /usr/share/man/man3/history.3.gz
libreadline /usr/share/man/man3/readline.3.gz
libreadline /usr/share/readline/
libreadline /usr/share/readline/excallback.c
libreadline /usr/share/readline/fileman.c
libreadline /usr/share/readline/hist_erasedups.c
libreadline /usr/share/readline/hist_purgecmd.c
libreadline /usr/share/readline/histexamp.c
libreadline /usr/share/readline/manexamp.c
libreadline /usr/share/readline/rl-callbacktest.c
libreadline /usr/share/readline/rl-fgets.c
libreadline /usr/share/readline/rl.c
libreadline /usr/share/readline/rlbasic.c
libreadline /usr/share/readline/rlcat.c
libreadline /usr/share/readline/rlevent.c
libreadline /usr/share/readline/rlkeymaps.c
libreadline /usr/share/readline/rlptytest.c
libreadline /usr/share/readline/rltest.c
libreadline /usr/share/readline/rlversion.c
OP
我好像有readline
在两个 python 中都安装了,但在一种情况下找不到它。
我想拥有应该没有问题readline
同时。
问题是什么?我该如何解决?我宁愿暂时保留两条蟒蛇。
我不确定为什么我最终同时拥有两者,所以我怀疑它们(至少在某一时刻)出于某种原因都需要。
附:
这两个python很可能是从[这个“玩”][1]的主角升级而来,python 3.8(之前的3.8.1)升级到mingw-w64-x86_64-python 3.8.2-2
和 python 3.7 升级到python 3.8.2-1
.
支持代码/信息
$ pacman -Sl | grep readline
mingw32 mingw-w64-i686-python-pyreadline 2.1-1
mingw32 mingw-w64-i686-readline 8.0.004-1
mingw64 mingw-w64-x86_64-python-pyreadline 2.1-1
mingw64 mingw-w64-x86_64-readline 8.0.004-1 [installed]
msys libreadline 8.0.004-1 [installed]
I import readline
in .pythonrc
(两者相同),
我想每个蟒蛇应该能够找到its readline
.
But mingw64 python
没有找到its readline
, while msys python
finds its readline
.
$ python3.8 <-- This is /usr/bin/python3.8, from msys python
Python 3.8.2 (default, Apr 16 2020, 15:31:48)
[GCC 9.3.0] on msys
Type "help", "copyright", "credits" or "license" for more information.
Reading /home/RY16205/.pythonrc
readline is in /usr/lib/python3.8/lib-dynload/readline.cpython-38-i386-msys.dll
>>>
$ /mingw64/bin/python3.8.exe <-- From mingw64 python. Have to call it with full path, otherwise msys python is run
Python 3.8.2 (default, Apr 9 2020, 13:17:39) [GCC 9.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Reading C:/Users/RY16205/Documents/appls_mydocs/PortableApps/MSYS2Portable/App/msys32/home/RY16205/.pythonrc
Module readline not available.
Traceback (most recent call last):
File "C:/Users/RY16205/Documents/appls_mydocs/PortableApps/MSYS2Portable/App/msys32/home/RY16205/.pythonrc", line 42, in <module>
del os, atexit, readline, rlcompleter, save_history, historyPath
NameError: name 'readline' is not defined
>>>