为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式确定 pip '用户安装' 位置脚本目录

以编程方式确定 pip '用户安装' 位置脚本目录

烙印99 2022-12-20 14:24:00
如pip 文档中所述,用户可以使用pip install --user <pkg>.如何以编程方式确定这样安装的脚本的用户安装位置?我说的是应该添加到 PATH 中的目录,以便可以从命令行调用已安装的包。例如,在 Windows 中安装时pip install -U pylint --user我收到以下警告,因为我'C:\Users\myusername\AppData\Roaming\Python\Python37\Scripts'的 PATH 中没有:...Installing collected packages: wrapt, six, typed-ast, lazy-object-proxy, astroid, mccabe, isort, colorama, toml, pylint  Running setup.py install for wrapt ... done  WARNING: The script isort.exe is installed in 'C:\Users\myusername\AppData\Roaming\Python\Python37\Scripts' which is not on PATH.  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.  WARNING: The scripts epylint.exe, pylint.exe, pyreverse.exe and symilar.exe are installed in 'C:\Users\myusername\AppData\Roaming\Python\Python37\Scripts' which is not on PATH.是否有一些 python 代码可以用来以编程方式确定该位置(适用于 Windows/Linux/Darwin/等)?就像是:def get_user_install_scripts_dir():    ...    # would return 'C:\Users\myusername\AppData\Roaming\Python\Python37\Scripts'    # on Windows with Python 3.7.x, '/home/myusername/.local/bin' in Linux, etc    return platform_scripts_dir作为后备,我可以运行一些命令来获取这个位置吗?类似的东西(但脚本位置不是站点的基本目录):PS C:\Users\myusername\> python -m site --user-baseC:\Users\myusername\AppData\Roaming\Python$ python -m site --user-base/home/myusername/.local
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

我相信以下应该给出预期的结果


import os

import sysconfig


user_scripts_path = sysconfig.get_path('scripts', f'{os.name}_user')

print(user_scripts_path)

命令行:


python -c 'import os,sysconfig;print(sysconfig.get_path("scripts",f"{os.name}_user"))'

但可能是pip在内部使用了不同的逻辑(可能基于distutils),但结果应该还是一样的。


查看完整回答
反对 回复 2022-12-20
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

命令行:


python -c "import os, site; print(os.path.join(site.USER_BASE, 'Scripts' if os.name == 'nt' else 'bin'))"

功能:


import os, site


if os.name == 'nt':

    bin_dir = 'Scripts'

else:

    bin_dir = 'bin'


def get_user_install_bin_dir():

    return os.path.join(site.USER_BASE, bin_dir)


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信