python-3.x - 为什么 ensurepip 模块不适用于我的自制 python 3.9 安装?
问题描述
我已经通过自制软件在我的 macOS Big Sur 系统上安装了 python 3.9。为了让 pip3 正常工作,我尝试使用 ensurepip 模块:
python3 -m ensurepip
然后成功(显然):
Successfully installed pip-21.2.4 setuptools-57.4.0
但是,当我尝试运行 pip3 时,它找不到 pip 模块:
$ python3 -m pip
/usr/local/opt/python@3.9/bin/python3.9: No module named pip
可以看到这个目录下确实已经安装了pip模块:
/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip
但是,当我运行 python3 时,我看到了这个:
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages']
那么,为什么python3 -m ensurepip
决定将 pip 模块安装到它实际上并不查找模块的目录中呢?更重要的是,我该如何解决这个问题?
解决方案
我想到了。/usr/local
由于臭名昭著的 macOS 权限问题,python3 的自制软件安装未能正确完成。因此,python3 没有触发 postinstall 步骤,它设置了 pip3 等。因此,ensurepip 模块将 pip 安装到了不在 python3 的模块搜索路径中的目录中。
因此,我修复了自制软件的所有权问题/usr/local
(尽管我不确定为什么开箱即用仍然无法正常工作)。
然后,当我回去运行 postinstall 时,它失败了,没有告诉我任何事情。所以,我使用了这个--debug
选项,看到它很生气,因为 site-packages 目录不是空的(由于我之前使用 ensurepip 安装了 pip)。因此,我用 擦除了该目录rm -rf
,然后重新运行了安装后。然后,它奏效了。
推荐阅读
- javascript - firebase deploy - 意外错误 502 错误和“无法在字符串上创建属性”错误“
- vba - 我可以在 Excel VBA 中并行化 SQL 查询吗?
- c# - 在 C# WPF 中创建具有字符串格式的列
- html - 我有一个网页。当用户尝试查看网页的源代码时,我想显示空白页。我该怎么做?
- spring-boot - Spring Jpa Query by Example 集合
- javascript - For in 循环遍历数组而不是 JS 函数
- java - 试图在 2 个单独的数组列表中链接对象
- javascript - 查找错误:根据页面滚动位置突出显示侧边菜单
- sql - 如何根据临时表 SQL Server 2008 R2 从一个表中提取数据?
- node.js - Node.JS EXE 删除执行文件