【问题标题】:Importing in Python在 Python 中导入
【发布时间】:2010-10-16 09:15:41
【问题描述】:

在 Python 2.5 中,我通过更改环境变量来导入模块。它有效,但使用 site-packages 无效。除了 C:\Python25 之外,还有其他方法可以在目录中导入模块吗?

【问题讨论】:

  • “使用站点包不”是什么意思?你用的是什么代码?你遇到了什么错误?具体是什么情况?
  • @S.Lott:39个问题你还没习惯他?
  • @SilentGhost:我的默认假设是人们——最终——会学到一些东西。从统计上看,这似乎是一个似乎没有发生学习的情况。
  • @S.Lott:如果你没有注意到,有一群用户有 0 个答案,但有几十个措辞不佳的问题。我的感觉是他们利用这个社区来完成他们的工作。不诚实总是比有限的心智能力更可能发生,这就是海因莱因教给我的;)
  • @SilentGhost:只是回应不诚实的评论。如果你不知道自己在做什么,事情就很难了。我经常发现,假设基础知识是给定的,作者会在教程中遗漏非常基本的东西。我认为这会导致很多过于简化且代表性不足的问题。另外,我强烈推荐 Heinlein 给任何有阅读能力的人。

标签: python import


【解决方案1】:

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

sys.path.append("/home/foo")

【讨论】:

  • 已修复 - 令人惊奇的是我输入了两次“os.path”却没有注意到。
【解决方案2】:

正在使用PYTHONPATH 环境变量。另一种是直接通过 sys.path.append(path) 或通过定义 .pth 文件添加到sys.path 的路径并使用site.addsitedir(dirWithPths) 添加它们。路径文件 (.pth) 是简单的文本文件,每行都有一个路径。将读取dirWithPths 中的每个.pth 文件。

【讨论】:

  • 它不工作。 site.addsitedir(dirWithPths) 正在返回 None 你能帮帮我吗?
  • ¿您期望它返回什么?它只是将路径添加到 sys.path。
  • 看起来 .pth 文件足以让 python 搜索模块。无需使用site.addsitedir(dirWithPths),仅当您要将.pth 文件放在python 正在查找的某个非默认导入目录中时才需要。
【解决方案3】:

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

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

import sys
sys.path.append(newpath)

如果您希望在site-packages 之前搜索您的新目录,请将目录放在列表的最前面,如下所示:

import sys
sys.path.insert(0, newpath)

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • os.path.append 除了引发 AttributeError 之外没有做任何完全不同的事情
    • 不确定我说了什么冒犯了你,但没有恶意。
    • 可能是您说“所以 os.path.append 可能不会产生错误”的部分,这是不正确的,因为 os.path 没有 append 方法或属性,导致 SilentGhost 说的 AttributeError
    • 天啊。我很想知道是否冒犯,我错过了“愚蠢”的部分。对于那个很抱歉。这是一个非常糟糕的评论,所以我会删除它,以免造成进一步的伤害:-)
    猜你喜欢
    • 2023-01-26
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多