如何设置Python的USER_SITE;我需要吗?

2024-05-14

我在 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 包或我在站点包目录中维护的重复包。

一切正常,并且我所有的道路 https://stackoverflow.com/q/21236384/656912似乎正是我所期望的;然而当我得到一个令人困惑的结果

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 https://docs.python.org/2/library/site.html#site.USER_SITE be /Library/Python/2.7/site-packages?如果是这样,我该如何设置它(我不能通过设置USER_SITE to /Library/Python/2.7/因为lib/python/添加到路径中)?


这让我倍感困惑,因为/Library/Python/2.7/site-packages已正确添加到我的sys.path(我不知道从哪里来)因为

import pkg_resources
pkg_resources.__file__

yields /Library/Python/2.7/site-packages/pkg_resources.pyc.


用户站点是一种机制,意味着“允许用户在其主目录中本地安装 Python 包”。 (看here http://legacy.python.org/dev/peps/pep-0370/)。即,它适用于本地用户包,而不是站点范围的安装。如果您的系统上有多个用户,他们的用户站点包将是独立的。

来自文档 https://docs.python.org/2/library/site.html#site.USER_SITE,我们可以看到 USER_SITE 是:

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

(用户群位于同一位置)

所以回答你的问题 - 我相信它们的设置是正确的。它是不同的站点包的位置比常规包的位置要高。

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

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

因此,这些路径不存在这一事实并不重要。

另外,关于你的问题:

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

请注意,在文档中它说~/图书馆/... - 那个~被替换为/Users/Rax/

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置Python的USER_SITE;我需要吗? 的相关文章

随机推荐