Python 现在认为参数是文件:损坏的emerge、pip、livestreamer 和大多数使用Python 的工具

Python 现在认为参数是文件:损坏的emerge、pip、livestreamer 和大多数使用Python 的工具

对于这些命令(在 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'

如何重现(不是真的):

  1. 做我吧,高兴地在快要死的键盘上编码(电缆损坏,有时会导致我在 ~/ 中创建奇怪的文件)。
  2. (也许无关)在此过程中执行sudo pip3 uninstall aiohttp_jinja2,因为我不再需要它(aiohttp.web AsyncIO Web 服务器的 Jinja2 模板引擎的包装器)。
  3. 发现pip、emerge、livestreamer都不起作用。
  4. 找到一个奇怪的空目录 /home/username/~/ (这是一个实际的目录 ~/~/,而不是指向 ~/ 的指针。),出于沮丧而将其删除rm -r \~/
  5. 工作10个小时后去睡觉。
  6. 醒醒吧,使用Python的工具开机后还是不行,发现~/~/目录又出现了,再次删除。
  7. 尝试将主要 Python 版本从 3.3 更改为 2.7 ( sudo eselect python set 1),但没有帮助。
  8. 下载https://pypi.python.org/packages/source/a/aiohttp_jinja2/aiohttp_jinja2-0.4.1.tar.gz并使用手动安装它sudo python3 setup.py install,这没有帮助(可能在核心Python模块中仍然存在一些问题,也许os或者configparser,不确定。
  9. 提出问题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 来下载软件包并手动挂载文件系统来安装二进制软件包。

相关内容