<tfoot id='kA3Z5'></tfoot>

      • <bdo id='kA3Z5'></bdo><ul id='kA3Z5'></ul>
      <legend id='kA3Z5'><style id='kA3Z5'><dir id='kA3Z5'><q id='kA3Z5'></q></dir></style></legend>

    1. <small id='kA3Z5'></small><noframes id='kA3Z5'>

        <i id='kA3Z5'><tr id='kA3Z5'><dt id='kA3Z5'><q id='kA3Z5'><span id='kA3Z5'><b id='kA3Z5'><form id='kA3Z5'><ins id='kA3Z5'></ins><ul id='kA3Z5'></ul><sub id='kA3Z5'></sub></form><legend id='kA3Z5'></legend><bdo id='kA3Z5'><pre id='kA3Z5'><center id='kA3Z5'></center></pre></bdo></b><th id='kA3Z5'></th></span></q></dt></tr></i><div id='kA3Z5'><tfoot id='kA3Z5'></tfoot><dl id='kA3Z5'><fieldset id='kA3Z5'></fieldset></dl></div>

      1. 导入任意 python 源文件.(Python 3.3+)

        Import arbitrary python source file. (Python 3.3+)(导入任意 python 源文件.(Python 3.3+))

        1. <i id='qrX8W'><tr id='qrX8W'><dt id='qrX8W'><q id='qrX8W'><span id='qrX8W'><b id='qrX8W'><form id='qrX8W'><ins id='qrX8W'></ins><ul id='qrX8W'></ul><sub id='qrX8W'></sub></form><legend id='qrX8W'></legend><bdo id='qrX8W'><pre id='qrX8W'><center id='qrX8W'></center></pre></bdo></b><th id='qrX8W'></th></span></q></dt></tr></i><div id='qrX8W'><tfoot id='qrX8W'></tfoot><dl id='qrX8W'><fieldset id='qrX8W'></fieldset></dl></div>
            <tbody id='qrX8W'></tbody>

              <bdo id='qrX8W'></bdo><ul id='qrX8W'></ul>

                  <small id='qrX8W'></small><noframes id='qrX8W'>

                  <legend id='qrX8W'><style id='qrX8W'><dir id='qrX8W'><q id='qrX8W'></q></dir></style></legend><tfoot id='qrX8W'></tfoot>

                • 本文介绍了导入任意 python 源文件.(Python 3.3+)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  如何在 Python 3.3+ 中导入任意 python 源文件(其文件名可以包含任何字符,并且并不总是以 .py 结尾)?p>

                  我使用 imp.load_module 如下:

                  >>>进口小鬼>>>路径 = '/tmp/a-b.txt'>>>使用 open(path, 'U') 作为 f:... mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))...>>>模组<来自'/tmp/a-b.txt'的模块'a_b'>

                  它在 Python 3.3 中仍然有效,但根据 imp.load_module 文档,它已被弃用:

                  <块引用>

                  自 3.3 版起已弃用:不需要,因为应该使用加载器加载模块和 find_module() 已弃用.

                  imp模块文档推荐使用importlib:

                  <块引用>

                  注意新程序应该使用 importlib 而不是这个模块.

                  在不使用已弃用的 imp.load_module 函数的情况下,在 Python 3.3+ 中加载任意 python 源文件的正确方法是什么?

                  解决方案

                  importlib 测试代码.

                  使用 importlib.machinery.SourceFileLoader:

                  >>>导入 importlib.machinery>>>loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')>>>mod = loader.load_module()>>>模组<来自'/tmp/a-b.txt'的模块'a_b'>

                  注意:仅适用于Python 3.3+.

                  更新 Loader.load_module 自 Python 3.4 起已弃用.使用 Loader.exec_module 改为:

                  >>>导入类型>>>导入 importlib.machinery>>>loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')>>>mod = types.ModuleType(loader.name)>>>loader.exec_module(mod)>>>模组<模块'a_b'>

                  <小时>

                  >>>导入 importlib.machinery>>>导入 importlib.util>>>loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')>>>规格 = importlib.util.spec_from_loader(loader.name, loader)>>>mod = importlib.util.module_from_spec(spec)>>>loader.exec_module(mod)>>>模组<来自'/tmp/a-b.txt'的模块'a_b'>

                  How can I import an arbitrary python source file (whose filename could contain any characters, and does not always ends with .py) in Python 3.3+?

                  I used imp.load_module as follows:

                  >>> import imp
                  >>> path = '/tmp/a-b.txt'
                  >>> with open(path, 'U') as f:
                  ...     mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))
                  ...
                  >>> mod
                  <module 'a_b' from '/tmp/a-b.txt'>
                  

                  It still works in Python 3.3, but according to imp.load_module documentation, it is deprecated:

                  Deprecated since version 3.3: Unneeded as loaders should be used to load modules and find_module() is deprecated.

                  and imp module documentation recommends to use importlib:

                  Note New programs should use importlib rather than this module.

                  What is the proper way to load an arbitrary python source file in Python 3.3+ without using the deprecated imp.load_module function?

                  解决方案

                  Found a solution from importlib test code.

                  Using importlib.machinery.SourceFileLoader:

                  >>> import importlib.machinery
                  >>> loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')
                  >>> mod = loader.load_module()
                  >>> mod
                  <module 'a_b' from '/tmp/a-b.txt'>
                  

                  NOTE: only works in Python 3.3+.

                  UPDATE Loader.load_module is deprecated since Python 3.4. Use Loader.exec_module instead:

                  >>> import types
                  >>> import importlib.machinery
                  >>> loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')
                  >>> mod = types.ModuleType(loader.name)
                  >>> loader.exec_module(mod)
                  >>> mod
                  <module 'a_b'>
                  


                  >>> import importlib.machinery
                  >>> import importlib.util
                  >>> loader = importlib.machinery.SourceFileLoader('a_b', '/tmp/a-b.txt')
                  >>> spec = importlib.util.spec_from_loader(loader.name, loader)
                  >>> mod = importlib.util.module_from_spec(spec)
                  >>> loader.exec_module(mod)
                  >>> mod
                  <module 'a_b' from '/tmp/a-b.txt'>
                  

                  这篇关于导入任意 python 源文件.(Python 3.3+)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Split a Pandas column of lists into multiple columns(将 Pandas 的列表列拆分为多列)
                  How does the @property decorator work in Python?(@property 装饰器在 Python 中是如何工作的?)
                  What is the difference between old style and new style classes in Python?(Python中的旧样式类和新样式类有什么区别?)
                  How to break out of multiple loops?(如何打破多个循环?)
                  How to put the legend out of the plot(如何将传说从情节中剔除)
                  Why is the output of my function printing out quot;Nonequot;?(为什么我的函数输出打印出“无?)
                    1. <small id='l4EUJ'></small><noframes id='l4EUJ'>

                        <bdo id='l4EUJ'></bdo><ul id='l4EUJ'></ul>
                        <i id='l4EUJ'><tr id='l4EUJ'><dt id='l4EUJ'><q id='l4EUJ'><span id='l4EUJ'><b id='l4EUJ'><form id='l4EUJ'><ins id='l4EUJ'></ins><ul id='l4EUJ'></ul><sub id='l4EUJ'></sub></form><legend id='l4EUJ'></legend><bdo id='l4EUJ'><pre id='l4EUJ'><center id='l4EUJ'></center></pre></bdo></b><th id='l4EUJ'></th></span></q></dt></tr></i><div id='l4EUJ'><tfoot id='l4EUJ'></tfoot><dl id='l4EUJ'><fieldset id='l4EUJ'></fieldset></dl></div>

                          • <legend id='l4EUJ'><style id='l4EUJ'><dir id='l4EUJ'><q id='l4EUJ'></q></dir></style></legend>
                              <tbody id='l4EUJ'></tbody>
                            <tfoot id='l4EUJ'></tfoot>