我一直在学习Python,我正在学习2.7.3,我正在尝试理解import语句。
- the directory containing the input script (or the current directory).
- `PYTHONPATH` (a list of directory names, with the same syntax as the shell variable `PATH`).
- the installation-dependent default.下面是在命令行模式下使用python从我的计算机中输出的一个sys.path命令的示例:(我删除了一些这样就不会太大了)
“‘,’/usr/lib/lib/python2.7‘,'/usr/lib/python2.7/lib-old','/usr/lib/python2.7/lib-dynload',’/usr/lib/lib/python2.7/dist-packages‘,'/usr/lib/python2.7/dist-packages',’/usr/lib/python2.7/dist/PIL‘,’/usr/lib/python2.7/dist/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‘
现在,我假设“路径”引用包含“脚本”的目录,因此我认为其余的路径来自我的PYTHONPATH环境变量。但是,当我进入终端并键入env时,PYTHONPATH并不作为环境变量存在。我也尝试了import os,然后是os.environ,但是我得到了相同的输出。
我真的没有环境变量吗?我不认为我曾经专门定义过一个PYTHONPATH环境变量,但是我假设当我安装新的包时,他们会自动修改这个环境变量。如果我没有PYTHONPATH,我的sys.path是如何被填充的?如果我下载新包,如果我没有这个PYTHONPATH变量,Python如何知道在哪里查找它们?
env,它们都会显示许多相同的变量,例如,PATH。我知道持久化环境变量的文件位置,例如/etc/environment,它包含我的PATH变量。有可能知道持久性环境变量存储在哪里吗?建议存储新的持久性环境变量的位置是什么?环境变量实际上是如何与Python解释器(例如Python解释器)一起工作的?Python解释器查找PYTHONPATH,但是它在本质级别是如何工作的?发布于 2012-08-06 12:34:17
一次问这么多问题!:)
我只想回答其中的几个。
1)内置模块是随python发行版而来的任何模块。例如,sys和os模块是内置模块。这是真的。
2)默认情况下,系统中不存在PYTHONPATH变量。当您启动python解释器时,它会按照您所描述的方式填充路径数组,在其中搜索模块。这是sys.path的结果。然而,sys.path不是环境变量PYTHONPATH。如果您在系统中设置了PYTHONPATH,那么它中包含的所有路径都将包含在python解释器用于搜索模块的数组中。
我将把环境变量的答案留给其他人,因为我觉得我不是回答这样一个问题的合适人选。不过,我的感觉是,它可能会在不同的系统之间发生变化。不管怎样..。
希望能帮上忙。
发布于 2014-03-08 13:00:34
sys.builtin_module_names下面列出的模块。这些模块与解释器一起编译,因此总是可用的。请注意,它们是标准库的一部分,但是标准库包含更多的模块。为了澄清差异,如果您试图在python3.3:中运行这段代码导入sys >>> sys.path = [] >>>导入os # works >>>导入回溯# ImportError,跟踪在stdlib中!
在python2上都成功了,因为import是标准库路径的特例.(有关python3.3中对这的更改的更多信息,请参见这)。PYTHONPATH,那么它就不包含任何额外的目录。但是,您所链接的文档还声明python使用“依赖安装的默认设置”。您在sys.path中看到的目录是在这个“”中定义的。如果定义PYTHONPATH,则可以在默认目录之前向sys.path添加其他目录,但如果不定义它,则不会造成任何损害。~/.bashrc或~/.profile )中设置环境变量。
如果您使用Ubuntu,那么定义系统范围和持久环境变量的更好方法是使用pam_enviroment。您可以在Ask Ubuntu上看到这问题,它显示了如何设置一个系统范围的环境变量。
AFAIK没有标准的方法来设置每一个(例如)linux发行版,很明显,每个操作系统都有自己的方法来定义它们。
如果您想要更详细地解释环境变量的处理,您可能应该询问超级用户。发布于 2012-08-06 12:49:27
您的系统上没有定义PYTHONPATH。这意味着,除了sys.path之外,您在''中看到的都是“与安装相关的默认设置”。
环境变量描述的是环境,而不是过程。但是,您可以在启动进程时使用Linux env命令来调整它们。这基本上意味着进程将在不同的环境中运行。你问题中的“如果有效”部分可以有与平台相关的答案。但是,如果您指的是一个文件,我认为您无法“知道持久性环境变量存储在哪里”。可以在任何文件中设置环境变量,这些文件在某个时候(通常在启动时)或仅在命令行中执行。
https://stackoverflow.com/questions/11697517
复制相似问题