搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
当前回答
我试图安装一些站点包,如numpy, xgboost等,但每次都出现这个错误:
Fatal error in launcher: Unable to create process using
我尝试了很多方法来解决这个问题,并找到了这个方法,它成功地帮助了我:
python -m pip freeze
希望它也能帮助到别人。
附:我在这里找到了这个解决方案:https://stackoverflow.com/a/39733705/10310794
其他回答
至少在Windows上,pip在安装时将执行路径存储在可执行程序pip.exe中。
使用十六进制编辑器或写字板编辑这个文件(你必须将其保存为纯文本,然后保留二进制数据),用引号和空格将路径更改为Python,像这样:
#!"C:\Program Files (x86)\Python33\python.exe"
到一个转义路径,没有空格和引号,填充有空格(最后的点应该是空格):
#!C:\Progra~2\Python33\python.exe.............
对于“C:\Program Files”,这个路径可能是“C:\Progra~1”(DOS / Windows 3中的路径名称缩写)。X符号使用波浪号和数字)。 Windows为向后兼容DOS / Windows 3提供了这种替代表示法。x应用程序。
请注意,由于这是一个二进制文件,您不应该更改文件大小,这可能会破坏可执行文件,因此需要填充。
以管理员权限保存,确保它实际保存在目标位置,然后重试。
您可能还需要设置PATH变量,以便使用~符号表示pip的路径。
当我重新安装python时,通过卸载python3.7和安装python3.8,我也有类似的问题。但是我通过删除以前版本的python目录解决了这个问题。对我来说,它位于这里,
C:\Users\your-username\AppData\Local\Programs\Python
我删除了名为Python37的文件夹(用于以前的版本),并保留Python38(用于更新版本)。这是因为python本身似乎在为你的python脚本找到正确的目录时遇到了麻烦。
我写了一个脚本补丁那些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:])
我有这个问题,这个页面上的其他修复并没有完全解决这个问题。
解决问题的方法是进入我的系统环境变量并查看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安装程序,选择更改选项并确保启用了添加到路径选项,并让安装程序运行。在那之后,一切都正常运转。