每当我尝试安装新的 python 包时,我都会首先收到此消息:
Defaulting to user installation because normal site-packages is not writeable
即使我拥有管理员权限并且我正在计算机上运行我的
py
脚本和安装命令。
有什么想法为什么我在每次
pip
安装之前总是收到此消息吗?
虽然这很可能是可以避免的,但我发现唯一有效的选择是使用 --ignore-installed 开关,例如:
pip install -U --ignore-installed python-openstackclient
作为 root 允许 python 用正确的新版本覆盖所有旧的发行版文件。
这是一个老问题,但它很好地反映了我的问题。运行
python3 -m virtualenv myproject
后,它创建了 myproject/local/bin/activate
而不是 myproject/bin/activate
,在获取此文件后,pip3 install some_package
将报告 Defaulting to user installation because normal site-packages is not writeable
并继续以用户身份而不是虚拟环境安装软件包。
这两个问题的解决方法是:
sudo pip3 uninstall virtualenv
sudo apt install -y python3-virtualenv
对于非 Debian 发行版,第二个命令会有所不同。
对于任何不想重新安装 python 的人,如果您收到默认消息,那么您所要做的就是转到 AppData>Roaming>Python>Python3.(X)>site-packages。剪切与包相关的文件夹(您可以通过查看修改日期来识别),并将文件夹粘贴到原来安装的 python.exe 目标中,然后>Lib>site-packages。希望当您重新启动时代码编辑器模块能够正常工作。我这样做了并且成功了。
您可以将包文件复制到AppData>Roaming>Python>Python3.(X)>脚本目录
对我来说,我相信这个问题是由我的 $PATH 的更改引起的——具体来说:
我最近安装的另一个包取代了我的 pyenv shims 目录,并将其自身放置在 $PATH 变量中早于 pyenv 的位置。我正在处理神经影像数据,有问题的包是 FSL。由于我不想考虑的原因,更不用说理解,FSL 在所选的安装目录中安装了一个运行 python 3.11 的 miniConda 环境,我相信它首先在我的 Neuroimaging-poland (“nipl”) env 中被引用,它使用 pyenv 来运行 python 3.9。
还有:
which python
和 whereis python
也指向 fsl 目录而不是我的 pyenv python。这个故事的寓意,对于可能是边缘案例的:
echo $PATH
如上所述,用
which python
或 Whereis python
确认。
将 pyenv 初始化文本移动到我的 .zprofile 文件的底部(将其添加到最后,但添加到我的 $PATH 变量的最前面)清除了上面的错误。