【问题标题】:Load A Separate Codefile in Python在 Python 中加载单独的代码文件
【发布时间】:2013-05-21 02:52:49
【问题描述】:

我在python中有两个代码文件,比如说mainfile.py和separatecode.py。我想从 mainfile.py 中运行 separatecode.py,并引用存储 separatecode.py 的特定目录。

所以我想要做的伪代码是这样的:

导入 C:\Users\Jack\Documents\MyFolder\separatecode.py

许多问题讨论了导入,但我找不到讨论导入您在特定目录中编写的特定文件的问题。我希望能够使用在separatecode.py 中定义的函数,如果有帮助,我正在寻找R 中的source("separatecode.r") 命令的等价物。

【问题讨论】:

    标签: python import directory


    【解决方案1】:

    通过执行以下操作将该目录添加到您的sys.path

    import sys
    sys.path.append('/directory/to/my/file')
    

    正常导入模块:

    import separatecode
    

    【讨论】:

    • 这对我导入其他内置包的能力有何影响?那么,例如,在运行这段代码之后,导入随机仍然可以工作吗?
    • @user2327821:这仍然可以工作,因为所有其他模块也在sys.path 上。只是您现在还可以从separatecode 模块导入代码。
    【解决方案2】:

    您使用的代码将不起作用。会报语法错误。

    查看import statement 的文档,尤其是语法。 module 是一个或多个identifiers,由点分隔。

    您可以通过将 C:\Users\Jack\Documents\MyFolder 添加到 PYTHONPATH 环境变量来使 import separatecode 工作。这将使它可用于所有 Python 脚本。或者您可以将该路径添加到mainfile.py 中的sys.path 之前 导入separatecode

    【讨论】:

      【解决方案3】:

      试试这样的:

      import imp
      
      foo = imp.load_source('Module_name', 'Path\To\module.py')
      foo.MyClass()
      

      您不需要foo.MyClass(),这只是一个示例,表明该模块与任何其他模块一样工作

      不,您可以使用路径及其名称从任何地方导入模块,并且您可以访问其所有功能等

      还有什么可以看的:

      Python Imp

      我希望这就是你要找的东西

      【讨论】:

      • foo.MyClass() 在这里做什么?从链接看来,前两行似乎可以解决问题。甚至简单地导入 imp 后跟“imp.load_source('Module_name', 'Path\To\module.py')”
      • 它只是一个例子,比如 foo 是模块,你使用的是不需要它的 MyClass() 我只是表明当你导入时你可以像正常一样使用模块
      猜你喜欢
      • 1970-01-01
      • 2017-08-10
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2017-01-24
      相关资源
      最近更新 更多