gpt4 book ai didi

python - sys.path() 和 PYTHONPATH 问题

转载 作者:太空狗 更新时间:2023-10-30 02:13:02 27 4
gpt4 key购买 nike

我一直在学习 Python,我在 2.7.3 中工作,我正在尝试理解 import 语句。

  1. documentation表示当您尝试导入模块时,解释器将首先搜索其中一个内置模块。

    内置模块是什么意思?

  2. 然后,文档说解释器在 sys.path 列出的目录中搜索,并且 sys.path 是从这些来源初始化的:

    • 包含输入脚本的目录(或当前目录)。
    • PYTHONPATH(目录名称列表,语法与 shell 变量 PATH 相同)。
    • 依赖于安装的默认值。

    这是我的计算机在命令行模式下使用 python 的 sys.path 命令的示例输出:(我删除了一些,以免它太大)

    ['', '/usr/lib/python2.7', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

    现在,我假设“”路径指的是包含“脚本”的目录,因此我认为它们的其余部分将来 self 的 PYTHONPATH 环境变量。但是,当我转到终端并键入 env 时,PYTHONPATH 不作为环境变量存在。我还尝试了 import os 然后是 os.environ,但我得到了相同的输出。

    我真的没有 PYTHONPATH 环境变量吗?我不相信我曾经专门定义过 PYTHONPATH 环境变量,但我假设当我安装新包时它们会自动更改该环境变量。如果我没有 PYTHONPATH,我的 sys.path 是如何填充的?如果我下载新包,如果我没有这个 PYTHONPATH 变量,Python 如何知道在哪里寻找它们?

  3. 环境变量如何工作?据我了解,环境变量特定于为其设置的进程,但是,如果我打开多个终端窗口并运行 env,它们都会显示许多相同的变量,例如,路径。我知道持久环境变量的文件位置,例如 /etc/environment,其中包含我的 PATH 变量。是否可以判断持久环境变量的存储位置?存储新持久环境变量的推荐位置是什么?环境变量实际上如何与 Python 解释器一起工作? Python 解释器查找 PYTHONPATH,但它在具体层面是如何工作的?

最佳答案

一口气解决这么多问题! :)

好吧,我尽量只回答其中的几个问题。

1) 内置模块是 python 版本附带的任何模块。例如 sys 和 os 模块是内置模块。原来如此。

2) 默认情况下,PYTHONPATH 变量在您的系统上不存在。当您启动 python 解释器时,它会按照您描述的方式填充它搜索模块的路径数组。这是 sys.path 的结果。但是 sys.path 不是环境变量 PYTHONPATH。如果您在系统中设置了 PYTHONPATH,那么其中包含的所有路径都将包含在 python 解释器用于搜索模块的数组中。

我会把环境变量的答案留给其他人,因为我觉得我不是回答这样问题的合适人选。不过,我的感觉是,它可能会因系统而异。无论如何...

希望对您有所帮助。

关于python - sys.path() 和 PYTHONPATH 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com