搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
搜索网络,这似乎是由Python安装路径中的空格引起的问题。
我如何让pip工作,而不必重新安装在一个没有空格的路径中的所有东西?
当前回答
我添加了我的答案,因为我在本地配置ODDO9源代码时得到了相同的错误,它需要exe运行而运行exe,我得到了相同的错误。
从昨天开始,我配置了oddo 9.0(章节:“在requirements.txt文件中列出的Python依赖项。”),它需要运行PIP exe作为
C:\Python27\Scripts\pip.exe install -r requirements.txt
我的oddo路径是:D:\Program Files (x86)\Odoo 9.0-20151014 我的pip位置是:- D:\Program Files (x86)\Python27\Scripts\pip.exe
所以我打开命令提示符,转到上面的oddo路径,并尝试使用这些组合运行pip exe,但并不总是给出以上错误。
D:\Program Files (x86)\Python27\Scripts\pip.exe安装-r requirements.txt "D:\Program Files (x86)\Python27\Scripts\pip.exe install -r requirements.txt" Python27\Scripts\pip.exe安装-r requirements.txt "Python27/Scripts/pip.exe install -r requirements.txt"
我通过@user4154243的答案解决了我的问题,谢谢。
第一步:添加变量(如果你的路径不在变量的路径中)。
第二步:进入命令提示符,打开oddo安装路径。
第三步:运行此命令python -m pip install XXX将运行并安装的东西。
其他回答
这对我很有效
python -m pip install --upgrade --force-reinstall 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:])
我在https://pip.pypa.io/en/latest/installing.html#install-pip上看到了同样的问题,更新pip是:
python -m pip install -U pip
所以我做了(比如)
Python -m PIP安装virtualenv
它成功了!所以你可以做同样的'virtualenv'另一个你想要的包。
至少在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的路径。
如果您在Windows上使用区分大小写的文件系统,就会发生这种情况。如果你的venv目录中同时存在lib目录和lib目录,你就可以判断是否存在这种情况:
> dir
Directory: C:\git\case\sensitive\filesystem\here\venv
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/07/2018 4:10 PM Include
d----- 22/01/2019 7:52 AM Lib
d----- 22/01/2019 7:52 AM lib
d----- 22/01/2019 7:52 AM Scripts
d----- 22/01/2019 7:52 AM tcl
为了解决这个问题(直到virtualenv.py得到修复:https://github.com/pypa/virtualenv/issues/935)合并两个lib目录并使venv不区分大小写:
cd venv
move Lib rmthis
move .\rmthis\site-packages\ lib
rmdir rmthis
fsutil.exe file setCaseSensitiveInfo . disable