繁体   English   中英

如何在ipyhon中导入脚本作为模块?

[英]how to import scripts as modules in ipyhon?

所以,我有两个python文件:

第1个“m12345.py”

def my():
    return 'hello world'

第二个“1234.py”:

from m12345 import *
a = m12345.my()
print(a)

在ipython上我尝试执行这样的cmds:

exec(open("f:\\temp\\m12345.py").read())
exec(open("f:\\temp\\1234.py").read())

第二个命令的错误是:

ImportError: No module named 'm12345'

请帮助如何将第一个文件添加为第二个模块?

首先,如果您使用通用导入( from m12345 import * ),那么您只需调用my()函数而不是m12345.my() ,否则您将得到一个

NameError:未定义名称“m12345”

其次,您应该在每个脚本中添加以下代码段,以便能够直接运行它(导入时)。

if "__name__" = "__main__":
    pass

PS。 将其添加到第一个脚本(“m12345.py”)。 PS2。 避免使用通用导入方法,因为它能够弄乱脚本的命名空间。 (因此,它不被视为最佳做法)。

编辑: m12345.py是否位于python文件夹中(它安装在硬盘中)? 如果没有,那么你应该添加它在sys.path中的目录:

import sys
sys.path.append(directory)

其中directory是m12345.py所在位置的字符串。 请注意,如果您使用Windows,则应使用/而不是\\ 但是,重新定位脚本会更容易(如果可能的话)。

您必须通过调用m12345 = imp.new_module('m12345')创建一个新模块(例如m12345 ),然后通过调用exec(open('path/m12345.py').read(), m12345.__dict__)该模块中的python脚本exec(open('path/m12345.py').read(), m12345.__dict__) 请参阅以下示例:

import imp
pyfile = open('path/m12345.py').read()
m12345 = imp.new_module('m12345')
exec(pyfile, m12345.__dict__)

如果您希望模块位于系统路径中,则可以添加

sys.modules['m12345'] = m12345

在此之后你可以做到

import m12345

要么

from m12345 import *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM