搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
当前回答
我今天遇到了这个问题。我得到这个错误的原因是因为我有一个项目存储在Dropbox上,我从2台不同的电脑访问。
我正在使用venv,因为我在机器A上安装了venv,如果我试图在机器B上运行pytest,我会得到错误。
删除venv文件夹,运行python -m venv venv为我解决了这个问题。
其他回答
我在https://pip.pypa.io/en/latest/installing.html#install-pip上看到了同样的问题,更新pip是:
python -m pip install -U pip
所以我做了(比如)
Python -m PIP安装virtualenv
它成功了!所以你可以做同样的'virtualenv'另一个你想要的包。
我将python.exe的可执行文件重命名为例如python27.exe。关于Archimedix的答案,我用十六进制编辑器打开我的pip.exe,滚动到文件的末尾,并将路径中的python.exe更改为python27.exe。在编辑make shure时,不重写其他信息。
我写了一个脚本补丁那些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:])
我也有类似的问题,升级pip为我解决了这个问题。
python -m pip install --upgrade pip
这是在Windows上,pip.exe内的python路径不正确。有关路径的更多信息,请参阅Archimedix答案。
尝试使用下面的链接重新安装,
下载https://bootstrap.pypa.io/get-pip.py
下载后,将“get-pip.py”复制到python安装的主目录,然后打开cmd并导航到python目录并键入“python get-pip.py”(不带引号)
注意:还要确保在环境变量中设置了python目录。
希望这能有所帮助。