如何在Spyder中导入并运行已通过setuptools打包的自定义Python包?
解决Spyder中运行自定义打包Python包的问题
问题原因
你在终端用python Simulation_Package能正常运行,是因为Python会自动执行包内的__main__.py文件;但直接调用Simulation_Package.main()触发AttributeError,是因为main函数属于__main__.py模块,并非包的顶层可访问属性。
可行解决方案
方案1:修改包的__init__.py文件
在Simulation_Package目录下的__init__.py中添加一行代码,把__main__.py里的main函数导入到包的命名空间:
from .__main__ import main
修改后如果是非开发模式安装的包,需要重新执行pip install .更新安装;开发模式下无需额外操作。之后在Spyder中导入包就能直接调用Simulation_Package.main()。
方案2:直接导入__main__模块调用
无需修改包结构,在Spyder的代码中直接导入包的__main__模块再调用函数:
from Simulation_Package import __main__ as sim_main sim_main.main()
方案3:模拟终端运行方式
用subprocess模块在Spyder中模拟终端的运行命令,效果和终端执行python Simulation_Package完全一致:
import subprocess subprocess.run(["python", "-m", "Simulation_Package"], check=True)
内容的提问来源于stack exchange,提问作者Seji
相关产品推荐
相关产品推荐

