![Python 现在认为参数是文件:损坏的emerge、pip、livestreamer 和大多数使用Python 的工具](https://linux22.com/image/63740/Python%20%E7%8E%B0%E5%9C%A8%E8%AE%A4%E4%B8%BA%E5%8F%82%E6%95%B0%E6%98%AF%E6%96%87%E4%BB%B6%EF%BC%9A%E6%8D%9F%E5%9D%8F%E7%9A%84emerge%E3%80%81pip%E3%80%81livestreamer%20%E5%92%8C%E5%A4%A7%E5%A4%9A%E6%95%B0%E4%BD%BF%E7%94%A8Python%20%E7%9A%84%E5%B7%A5%E5%85%B7.png)
对于这些命令(在 bash 和 Fish 中):
sudo emerge eix
emerge eix
我收到此错误:
usage: emerge [-h] [--version] [input [input ...]]
emerge: error: argument input: can't open 'eix': [Errno 2] No such file or directory: 'eix'
与 livestreamer 相同(和“pip install”):
#~/temp> livestreamer http://www.twitch.tv/totalbiscuit
usage: livestreamer [-h] [--version] [input [input ...]]
livestreamer: error: argument input: can't open 'http://www.twitch.tv/totalbiscuit': [Errno 2] No such file or directory: 'http://www.twitch.tv/totalbiscuit'
如果存在具有第一个参数名称的文件,则第二个参数会出现相同的错误:
#~/temp> emerge test eix
usage: emerge [-h] [--version] [input [input ...]]
emerge: error: argument input: can't open 'test': [Errno 2] No such file or directory: 'test'
#~/temp> touch test
#~/temp> emerge test eix
usage: emerge [-h] [--version] [input [input ...]]
emerge: error: argument input: can't open 'eix': [Errno 2] No such file or directory: 'eix'
如何重现(不是真的):
- 做我吧,高兴地在快要死的键盘上编码(电缆损坏,有时会导致我在 ~/ 中创建奇怪的文件)。
- (也许无关)在此过程中执行
sudo pip3 uninstall aiohttp_jinja2
,因为我不再需要它(aiohttp.web AsyncIO Web 服务器的 Jinja2 模板引擎的包装器)。 - 发现pip、emerge、livestreamer都不起作用。
- 找到一个奇怪的空目录 /home/username/~/ (这是一个实际的目录 ~/~/,而不是指向 ~/ 的指针。),出于沮丧而将其删除
rm -r \~/
- 工作10个小时后去睡觉。
- 醒醒吧,使用Python的工具开机后还是不行,发现~/~/目录又出现了,再次删除。
- 尝试将主要 Python 版本从 3.3 更改为 2.7 (
sudo eselect python set 1
),但没有帮助。 - 下载https://pypi.python.org/packages/source/a/aiohttp_jinja2/aiohttp_jinja2-0.4.1.tar.gz并使用手动安装它
sudo python3 setup.py install
,这没有帮助(可能在核心Python模块中仍然存在一些问题,也许os
或者configparser
,不确定。 - 提出问题http://superuser.com,意识到这太技术性和 Linux 相关,请在这里提问。
iPython 也以一种有趣的方式消亡了(ipython 和 ipython3):
#~> ipython
You are running chardetect interactively. Press CTRL-D twice at the start of a blank line to signal the end of your input. If you want help, run chardetect --help
有什么建议么?
更新:越来越近。
所以/usr/bin/python2.7 /usr/lib/python-exec/python2.7/emerge -av eix
工作得很好,我认为问题与python-exec2不知何故:
#~> file /usr/bin/livestreamer
/usr/bin/livestreamer: symbolic link to ../lib/python-exec/python-exec2
#~> file /usr/bin/emerge
/usr/bin/emerge: symbolic link to ../lib/python-exec/python-exec2
#~> file /usr/bin/pip
/usr/bin/pip: symbolic link to ../lib/python-exec/python-exec2
#~> file /usr/bin/pip3
/usr/bin/pip3: symbolic link to ../lib/python-exec/python-exec2
答案1
您遇到问题的程序都是使用dev-lang/python-exec
脚本包装器运行的,该包装器似乎已损坏。
要尝试重新安装该软件包,假设没有其他任何问题受到严重损害,您可以尝试(调整版本号以匹配您安装的软件包):
/usr/bin/python2.7 /usr/lib/python-exec/python2.7/emerge -1a dev-lang/python-exec
如果您的 python 安装也损坏(或其他一些关键系统包),您应该能够使用二进制包进行恢复。您可以从以下位置下载一些火药盒。
根据安装损坏的严重程度,您可能需要启动 Live CD 来下载软件包并手动挂载文件系统来安装二进制软件包。