搜索网络,这似乎是由Python安装路径中的空格引起的问题。

我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?


当前回答

我写了一个脚本补丁那些exe。但最好的办法是修复distutil本身。

"""Fix "Fatal error in launcher: Unable to create process using ..." error. Put me besides those EXE made by pip. (They are made by distutils, and used by pip)"""
import re
import sys
import os
from glob import glob


script_path = os.path.dirname(os.path.realpath(__file__))
real_int_path = sys.executable
_t = script_path.rpartition(os.sep)[0] + os.sep + 'python.exe'
if script_path.lower().endswith('scripts') and os.path.isfile(_t):
    real_int_path = _t

print('real interpreter path: ' + real_int_path)
print()

for i in glob('*.exe'):
    with open(i, 'rb+') as f:
        img = f.read()
        match = re.search(rb'#![a-zA-Z]:\\.+\.exe', img)
        if not match:
            print("can't fix file: " + i)
            continue
        int_path = match.group()[2:].decode()
        int_path_start = match.start() + 2
        int_path_end = match.end()

        if int_path.lower() == real_int_path.lower():
            continue
        print('fix interpreter path: %s in %s' % (int_path, i))
        f.seek(int_path_start)
        f.write(real_int_path.encode())
        f.write(img[int_path_end:])

其他回答

似乎

python -m pip install XXX 

无论如何都会工作(为我工作过) (参见user474491的链接)

我有这个问题,这个页面上的其他修复并没有完全解决这个问题。

解决问题的方法是进入我的系统环境变量并查看PATH -我已经卸载了Python 3,但Python 3文件夹的旧路径仍然在那里。我在我的PC上只运行Python 2,并使用Python 2安装pip。

从PATH中删除对不存在的Python 3文件夹的引用,并升级到pip的最新版本,解决了这个问题。

对我来说,当我将环境路径从最初指向v3.6的路径改为指向v2.7时,就出现了这个问题。在那之后,要运行pip或virtualenv命令,我必须使用python -m pip install XXX,如下面的答案所述。

因此,为了摆脱这个问题,我再次运行v2.7安装程序,选择更改选项并确保启用了添加到路径选项,并让安装程序运行。在那之后,一切都正常运转。

当virtualenv路径中有空格时,这是一个已知的错误。更正已做,并将提供在下一个版本。

我将python.exe的可执行文件重命名为例如python27.exe。关于Archimedix的答案,我用十六进制编辑器打开我的pip.exe,滚动到文件的末尾,并将路径中的python.exe更改为python27.exe。在编辑make shure时,不重写其他信息。