“默认为用户安装,因为普通站点包不可写”python 消息

问题描述 投票:0回答:5

每当我尝试安装新的 python 包时,我都会首先收到此消息:

Defaulting to user installation because normal site-packages is not writeable

即使我拥有管理员权限并且我正在计算机上运行我的

py
脚本和安装命令。

有什么想法为什么我在每次

pip
安装之前总是收到此消息吗?

python installation pip
5个回答
5
投票

虽然这很可能是可以避免的,但我发现唯一有效的选择是使用 --ignore-installed 开关,例如:

pip install -U --ignore-installed python-openstackclient

作为 root 允许 python 用正确的新版本覆盖所有旧的发行版文件。


2
投票

这是一个老问题,但它很好地反映了我的问题。运行

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 发行版,第二个命令会有所不同。


0
投票

对于任何不想重新安装 python 的人,如果您收到默认消息,那么您所要做的就是转到 AppData>Roaming>Python>Python3.(X)>site-packages。剪切与包相关的文件夹(您可以通过查看修改日期来识别),并将文件夹粘贴到原来安装的 python.exe 目标中,然后>Lib>site-packages。希望当您重新启动时代码编辑器模块能够正常工作。我这样做了并且成功了。


0
投票

您可以将包文件复制到AppData>Roaming>Python>Python3.(X)>脚本目录


0
投票

对我来说,我相信这个问题是由我的 $PATH 的更改引起的——具体来说:

我最近安装的另一个包取代了我的 pyenv shims 目录,并将其自身放置在 $PATH 变量中早于 pyenv 的位置。我正在处理神经影像数据,有问题的包是 FSL。由于我不想考虑的原因,更不用说理解,FSL 在所选的安装目录中安装了一个运行 python 3.11 的 miniConda 环境,我相信它首先在我的 Neuroimaging-poland (“nipl”) env 中被引用,它使用 pyenv 来运行 python 3.9。

还有:

  • 我注意到软件包的版本匹配到 3.11 而不是 3.9
  • 我确信已安装的软件包未被 pip 检测/列出
  • which python
    whereis python
    也指向 fsl 目录而不是我的 pyenv python。

这个故事的寓意,对于可能是边缘案例的:

  • 通过转到终端并输入以下内容,确保在所需安装之前没有引用任何 python 安装:

echo $PATH

  • 如上所述,用

    which python
    Whereis python
    确认。

  • 将 pyenv 初始化文本移动到我的 .zprofile 文件的底部(将其添加到最后,但添加到我的 $PATH 变量的最前面)清除了上面的错误。

© www.soinside.com 2019 - 2024. All rights reserved.