【问题标题】:How I set Python's USER_SITE; do I need to?我如何设置 Python 用户站点;我需要吗?
【发布时间】:2014-12-14 18:41:05
【问题描述】:

我在 OS X(10.10;仅使用 pip 维护)上安装了 Python,其中包含我的站点包

/Library/Python/2.7/site-packages

苹果的包在

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

和标准的 Apple Python 安装在

/System/Library/Frameworks/Python.framework/Versions/2.7

我没有做任何特别的设置,所以我认为它是非常标准的。我将我的包安装在站点包目录中,而我为“自定义”所做的唯一一件事就是修剪我不需要的 Apple 包或我在我的站点包目录中维护的重复包。

一切正常,all my paths 似乎正是我所期望的;但是当我

python -m site

虽然这显示了一个对我来说有意义的sys.path

sys.path = [
    '/Users/Rax',
    '/Users/Rax/Documents/Projects/Coding/Python', # From PYTHONPATH
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
    '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
    '/Library/Python/2.7/site-packages',
]

我也明白了

USER_BASE: '/Users/Rax/Library/Python/2.7' (doesn't exist)
USER_SITE: '/Users/Rax/Library/Python/2.7/lib/python/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

这对我来说没有意义。

USER_SITE 不应该是/Library/Python/2.7/site-packages 吗?如果是这样,我该如何设置(我不能将USER_SITE 设置为/Library/Python/2.7/,因为lib/python/ 已添加到路径中)?


这让我倍感困惑,因为/Library/Python/2.7/site-packages 被正确地添加到了我的sys.path(我不知道的地方)并且因为

import pkg_resources
pkg_resources.__file__

收益/Library/Python/2.7/site-packages/pkg_resources.pyc

【问题讨论】:

    标签: python macos configuration path


    【解决方案1】:

    用户站点是一种机器,旨在“允许用户在其主目录中本地安装 Python 包”。 (见here)。即,它适用于本地用户包,而不是站点范围的安装。如果您的系统上有多个用户,他们的用户站点包将是独立的。

    documentation可以看出USER_SITE是:

    运行 Python 的用户站点包的路径。可以是 None 如果 getusersitepackages() 尚未被调用。默认值为 ~/.local/lib/pythonX.Y/site-packages 用于 UNIX 和非框架 Mac OS X 构建,~/Library/Python/X.Y/lib/python/site-packages for Mac 框架构建,以及 %APPDATA%\Python\PythonXY\site-packages 视窗。这个目录是一个站点目录,这意味着 .pth 将处理其中的文件。

    (用户群在同一位置)

    所以回答你的问题 - 我相信它们设置正确。这是一个不同的站点包位置,而不是常规站点。

    您还可以在通用模块文档中看到它说:

    此文件旨在在用户站点包中创建 目录(见下文),它是 sys.path 的一部分,除非被禁用 -s。 ImportError 将被静默忽略。

    所以这些路径不存在的事实并不重要。

    另外,关于您的问题:

    USER_SITE 不应该是 /Library/Python/2.7/site-packages 吗?

    请注意,在文档中它说 ~/Library/... - ~ 被替换为 /Users/Rax/

    您根本不必担心 USER_SITE 设置。如果目录不存在,则无论如何都不会添加到路径中。

    【讨论】:

    • 啊,有道理。因此,它适用于 additional 用户站点包,超出了我在“/Library/Python/2.7/site-packages”中的那个(这是标准的,显然不需要我进行任何配置)。对吗?
    • @raxacoricofallapatorius 是的,据我所知。
    • @raxacoricofallapatorius:是的,USER_SITE 适用于每个用户 包,而不是站点范围的安装。如果您的系统上有多个用户,他们的用户站点包将是分开的。
    • @MartijnPieters:所以如果只有我(我所有的包都在 '/Library/Python/2.7/site-packages' 中),禁用 @ 是正确的(或至少是整洁的)事情987654325@(通过将USER_HOME设置为0)?
    • @raxacoricofallapatorius:你根本不用担心 USER_SITE 设置。如果目录不存在,则不会将其添加到路径无论如何
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2016-12-14
    • 2012-01-04
    • 2020-11-16
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多