当前位置: 首页 > 面试题库 >

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

澹台聪
2023-03-14
问题内容

如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 / etc下运行)?就像是:

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-base
C:\Users\myusername\AppData\Roaming\Python

$ python -m site --user-base
/home/myusername/.local

问题答案:

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

import os
import sysconfig

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

但是可能是 pip 内部使用了不同的逻辑(可能基于
distutils
),但是结果应该仍然相同。

参考文献

  • https://docs.python.org/3/library/sysconfig.html#installation-paths
  • https://docs.python.org/3/library/os.html#os.name


 类似资料:
  • 问题内容: 我有一个脚本,打算由多名用户在多台计算机上运行,​​并且他们各自的主目录中都没有他们的Dropbox文件夹。我讨厌必须在脚本中硬编码路径。我宁愿以编程方式找出路径。 任何建议欢迎。 编辑:我不在脚本中使用Dropbox API,该脚本只是读取用户之间共享的特定Dropbox文件夹中的文件。我唯一需要的是Dropbox文件夹的路径,因为我当然已经知道Dropbox文件结构内的相对路径。

  • 我似乎不能正确使用sudo pip安装,以便它安装到以下目录: 这样我就可以使用python导入模块 我跑过了 结果 但是,它不在正确的目录中 如何让sudo pip安装到正确的目录? 另外,我也试过了 sudo-pip安装刮擦 我得到以下信息 这两个实例都表明它已经安装,但并不正确。例如,当我在python中运行以下导入: 我尝试了以下方法:

  • 问题内容: 我可以下载并安装一封来自PyPI Python模块严格意义上的脚本中,不使用外壳 在所有 ? 我使用非标准的Python环境,即Autodesk Maya的Python解释器。它不带有“ easy_install”,也没有“ shell”,只有主要Maya可执行文件调用的python脚本解释器。将ez_setup.py的内容复制并粘贴到脚本编辑器窗口中并正确运行,将easy_insta

  • 使用Android的,我想更改给定项目的背景(即使它当前不可见)。 我看到的所有教程都展示了如何使用访问视图,但在我的示例中,这必须以编程方式完成,而不需要用户执行任何操作。我只想检索视图,并能够在其上应用或等函数。 我怎样才能做到这一点,拥有我想要编辑的视图的位置?

  • 我必须下载一个git python回购和安装,因为pypi版本不更新。 通常我会这样做: 现在,我已将回购克隆到以下文件夹中: /opt/mypackage 那么,我如何运行来安装下面的不是使用pypi版本而是本地版本呢? 有可用的pip标志,我不知道如何实现:

  • 我在尝试以编程方式安装apk并在安装后重新启动Android emulator时遇到了一些问题。我指的是这条线。 这是我的代码: 有没有办法安装apk而不启动意图?因为我正在AsyncTask的中执行上述方法。然后在中,我需要显示一个片段,说明安装成功。 然而,对于上面的代码,在调用时,它只是关闭了我的所有片段。