如何在 ipython 中将脚本作为模块导入?
how to import scripts as modules in ipyhon?
所以,我有两个 python 文件:
第一名"m12345.py"
def my():
return 'hello world'
第二个“1234.py”:
from m12345 import *
a = m12345.my()
print(a)
在 ipython 我尝试执行这样的命令:
exec(open("f:\temp\m12345.py").read())
exec(open("f:\temp\1234.py").read())
第二个命令的错误是:
ImportError: No module named 'm12345'
请问如何将第一个文件添加为第二个文件的模块?
您必须通过调用 m12345 = imp.new_module('m12345')
创建一个新模块(例如 m12345
),然后通过调用 exec(open('path/m12345.py').read(), m12345.__dict__)
在该模块中执行 python 脚本。请参阅以下示例:
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 *
首先,如果您使用通用导入 (from m12345 import *
),那么您只需调用 my()
函数而不是 m12345.my()
否则您将得到一个
NameError: name 'm12345' is not defined
其次,您应该在每个脚本中添加以下代码片段,您希望在其中能够直接 运行 或不直接(导入时)。
if "__name__" = "__main__":
pass
PS。将此添加到第一个脚本 ("m12345.py")。
PS2。避免使用通用导入方法,因为它有能力弄乱脚本的命名空间。 (因此,它不被认为是最佳实践)。
编辑: m12345.py 是否位于 python 文件夹中(它安装在硬盘驱动器中的位置)?如果没有,那么你应该添加它位于 sys.path 中的目录:
import sys
sys.path.append(directory)
其中 directory 是您的 m12345.py 所在位置的字符串。请注意,如果您使用 Windows,则应使用 /
而不是 \
。
然而,重新定位脚本会容易得多(如果可能的话)。
所以,我有两个 python 文件:
第一名"m12345.py"
def my():
return 'hello world'
第二个“1234.py”:
from m12345 import *
a = m12345.my()
print(a)
在 ipython 我尝试执行这样的命令:
exec(open("f:\temp\m12345.py").read())
exec(open("f:\temp\1234.py").read())
第二个命令的错误是:
ImportError: No module named 'm12345'
请问如何将第一个文件添加为第二个文件的模块?
您必须通过调用 m12345 = imp.new_module('m12345')
创建一个新模块(例如 m12345
),然后通过调用 exec(open('path/m12345.py').read(), m12345.__dict__)
在该模块中执行 python 脚本。请参阅以下示例:
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 *
首先,如果您使用通用导入 (from m12345 import *
),那么您只需调用 my()
函数而不是 m12345.my()
否则您将得到一个
NameError: name 'm12345' is not defined
其次,您应该在每个脚本中添加以下代码片段,您希望在其中能够直接 运行 或不直接(导入时)。
if "__name__" = "__main__":
pass
PS。将此添加到第一个脚本 ("m12345.py")。 PS2。避免使用通用导入方法,因为它有能力弄乱脚本的命名空间。 (因此,它不被认为是最佳实践)。
编辑: m12345.py 是否位于 python 文件夹中(它安装在硬盘驱动器中的位置)?如果没有,那么你应该添加它位于 sys.path 中的目录:
import sys
sys.path.append(directory)
其中 directory 是您的 m12345.py 所在位置的字符串。请注意,如果您使用 Windows,则应使用 /
而不是 \
。
然而,重新定位脚本会容易得多(如果可能的话)。