![](/img/trans.png)
[英]How to (add/import/reference) needed Modules for making executables from scripts
[英]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.