python - 如何在 ipython 中将脚本作为模块导入?

标签 python ipython python-import

所以,我有两个 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'

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

最佳答案

首先,如果您使用通用导入(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 - 如何在 ipython 中将脚本作为模块导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820350/

相关文章:

python - 如何在nginx中生成用户定义的 "404 page not found"?

Python 模块在 IDE 之间是不同的

python - 按 Pandas 数据框列的相同部分字符串分组

python - SPYDER 和 IPython 4.0 支持

Python:导入导入模块的模块

Python 错误 : the following arguments are required

python - 从同一目录中的所有模块导入并调用相同的函数

python - 从用户的输入中确定最常见的词。 [Python]

python - 如何从子进程中获取环境?

python - 获取客户端的两个字母语言代码