用Python导入

用Python导入,python,import,Python,Import,在Python2.5中,我通过更改环境变量导入模块。它可以工作,但使用站点包却不行。除了C:\Python25之外,还有其他方法导入目录中的模块吗?将模块的位置附加到sys.path 编辑:(来反驳下面的帖子;-)) os.path做了一些完全不同的事情。您需要使用sys.path sys.path.append("/home/me/local/modules") sys.path是一个列表,您可以在其中附加自定义路径以进行如下搜索: sys.path.append("/home/foo")

在Python2.5中,我通过更改环境变量导入模块。它可以工作,但使用站点包却不行。除了C:\Python25之外,还有其他方法导入目录中的模块吗?

将模块的位置附加到
sys.path

编辑:(来反驳下面的帖子;-))
os.path
做了一些完全不同的事情。您需要使用
sys.path

sys.path.append("/home/me/local/modules")

sys.path
是一个列表,您可以在其中附加自定义路径以进行如下搜索:

sys.path.append("/home/foo")
import sys
sys.path.insert(0, newpath)

添加到
PYTHONPATH
环境变量的目录在
site packages
之后搜索,因此如果
site packages
中有一个模块与您希望从
PYTHONPATH
中获得的模块同名,则
site packages
版本将获胜。此外,您可能需要重新启动解释器和启动解释器的shell,以使对环境变量的更改生效

如果要在运行时将目录添加到搜索路径,而不重新启动程序,请将目录添加到
sys.path
。例如:

import sys
sys.path.append(newpath)
如果希望在
站点包之前搜索新目录,请将目录放在列表的前面,如下所示:

sys.path.append("/home/foo")
import sys
sys.path.insert(0, newpath)

路上有环境变量。另一种方法是直接通过
sys.path.append(path)
或通过定义
.pth
文件将路径添加到中,并将其添加到中。路径文件(
.pth
)是简单的文本文件,每行都有一个路径。将读取
dirWithPths
中的每个
.pth
文件。

os.path.append没有做任何完全不同的事情,除了引发attributeer错误,或者不确定我在那里说了什么冒犯了你,但没有恶意。可能是你说“So os.path.append可能不会生成错误”的部分这是不真实的,因为os.path没有append方法或属性,导致AttributeError为SilentGhost saidomg。我很想表现出攻击性,我错过了“愚蠢”部分。很抱歉。这是一个非常糟糕的评论,所以我将删除它,这样就不会造成进一步的伤害:-)“使用网站包”是什么意思?你用的是什么代码?你犯了什么错误?具体来说,发生了什么事?@S.Lott:39个问题,你还不习惯他吗?@silenghost:我默认的假设是人们最终会学到一些东西。从统计上看,这似乎是一种学习似乎没有发生的情况。@S.Lott:如果你没有注意到,有一群用户的答案为0,但有几十个措词不当的问题。我的感觉是他们利用这个社区来做他们的工作。不诚实总是比有限的心智能力更容易发生,这是海因莱因教给我的;)@SilentGhost:只是回应不诚实的评论。如果你不知道自己在做什么,事情就很难做。我经常发现,假设基础知识是给定的,作者在教程中会遗漏一些非常基本的东西。我认为这会导致很多过于简化、表达能力差的问题。另外,我向所有能阅读的人强烈推荐Heinlein.Fixed——令人惊讶的是,我输入了两次“os.path”,却没有注意到。它不起作用。site.addsitedir(dirWithPths)没有返回任何内容。您能帮助我吗?您希望它返回什么?它只是将路径添加到sys.path.prookes中。pth文件足以让python搜索模块。无需使用
site.addsitedir(dirWithPths)
,只有当您想将.pth文件放在python正在查看的非默认导入目录中时,才需要使用该选项。