以前一直用的CentOS环境,也许主要原因是权限一直比较大,site-packages 一般是如下目录。

# On CentOS 环境,安装的python package 在以下目录
/usr/local/lib/python3.7/site-packages

# 不在下面
/usr/lib/python3.7/site-packages

今年用Ubuntu 22.04,才注意到安装的 site-packages 是在每个用户的/home 下。这样如果一个python script 给其他用户使用,一定要确保依赖的package也被安装了。可以使用 python3 -m site 查看自己的USER_BASE, USER_SITE.

jjing@[hostname]:~$ python3 -m site
sys.path = [
    '/home/jjing',
    '/usr/lib/python310.zip',
    '/usr/lib/python3.10',
    '/usr/lib/python3.10/lib-dynload',
    '/home/jjing/.local/lib/python3.10/site-packages',
    '/usr/local/lib/python3.10/dist-packages',
    '/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/jjing/.local' (exists)
USER_SITE: '/home/jjing/.local/lib/python3.10/site-packages' (exists)
ENABLE_USER_SITE: True

root@[hostname]:~# python3 -m site
sys.path = [
    '/root',
    '/usr/lib/python310.zip',
    '/usr/lib/python3.10',
    '/usr/lib/python3.10/lib-dynload',
    '/usr/local/lib/python3.10/dist-packages',
    '/usr/lib/python3/dist-packages',
]
USER_BASE: '/root/.local' (exists)
USER_SITE: '/root/.local/lib/python3.10/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

可以参考文章 更新pip默认安装路径 修改site.py 文件中 USER_BASEUSER_SITE这两个参数值。

sudo vi /usr/lib/python3.10/site.py 

也可以把ENABLE_USER_SITE设为False

# Enable per user site-packages directory
# set it to False to disable the feature or True to force the feature
#ENABLE_USER_SITE = None
ENABLE_USER_SITE = False

因此Ubuntu下安装package 相当于用下面的命令给当前用户安装。

$ pip3 install --user <package name>
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐