Python开发中如何直接运行entry_point指定的foo.bar:baz函数?
解决开发时直接运行entry_points指定函数的问题
你可以用以下几种方式避免每次修改代码都重新安装包,直接运行目标函数:
方法1:用python -c直接调用函数
在项目根目录(包含foo文件夹的目录)下运行:
python -c "from foo.bar import baz; baz()"
这种方式无需额外配置,直接通过命令行导入函数并执行,修改代码后重新运行该命令即可生效。
方法2:使用setuptools开发模式安装
执行以下命令在开发模式下安装你的包:
pip install -e .
这个命令会在系统中生成指向源码的软链接,安装后的foobaz命令会直接调用本地源码文件。之后修改代码无需重新安装,直接运行foobaz就能使用最新逻辑,和Flask的自动重载逻辑类似。如果baz是启动Flask应用的函数,还可以在代码中开启debug模式实现自动重载。
方法3:在模块中添加主入口块
在foo/bar.py文件末尾添加以下代码:
if __name__ == "__main__": baz()
之后你就可以用以下命令直接运行模块并执行baz函数:
python -m foo.bar
这种方式不需要安装包,修改代码后重新运行命令即可,还能避免直接运行python foo/bar.py时出现的相对导入错误(-m参数会把foo.bar作为正规模块加载,正确识别父包结构)。
内容的提问来源于stack exchange,提问作者tobiasBora
相关产品推荐
相关产品推荐

