为什么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模块安装到一个实际上不查找模块的目录中呢?更重要的是,我怎么解决这个问题?

我明白了。由于macOS中臭名昭著的/usr/local权限问题,python3的自制安装无法正确完成。因此,python3不会触发postinstall步骤,因为python3会设置pip3等。因此,ensurepip模块将pip安装到一个不在python3的模块搜索路径中的目录。

所以,我修复了/usr/local的所有权问题,(虽然我不知道为什么这仍然不能正常工作)。

之后,当我回到运行postinstall,它没有告诉我任何东西。因此,我使用了--debug选项,并且看到它很生气,因为site-packages目录不是空的(由于我以前使用ensurepip安装pip)。所以,我用rm -rf清除了那个目录,并重新运行了安装后程序。然后,它成功了。

相关内容

  • 没有找到相关文章

最新更新