python - Python:从脚本模式切换到模块模式
问题描述
我有一个包含多个子包的复杂存储库结构:
/foo/file1.py
/foo/file2.py
/foo/bar/file3.py
/common/shared.py
(非常简化的版本)
所有包引用都是从根明确地相对或绝对的。一切正常,但我需要使用根目录中的全名将所有脚本作为模块运行,例如:python -m foo.file1
. 存储库的编码指南是并且将继续使用这种模式来运行脚本。
然而,有没有办法让一些文件在这个设置中作为脚本运行?
例如,我希望我可以这样做:
if not __package__:
__package__ = "foo.bar"
# use relative or absolute imports as if the file was run with python -m
我已经尝试过importlib
或runpy
没有成功。使用sys.path.append
使绝对导入有效,但相对导入仍然是一个问题。
解决方案
推荐阅读
- python - 如何使用 Raspberry Pi 解决有关 PiCamera 模块的 python 问题?
- python-3.x - 根据条件执行计算而不在 python 中指定列值
- java - 有没有可能用 JButton 计算
- git - 将工件添加到 gitlab-ci.yml 中的存储库
- scikit-learn - 关于通过将 random_state 值设置为整数来生成最佳决策树的困惑?
- php - 为什么我的查询结果将预期结果从“300”更改为上标“L”?
- java - 从 txt 读取二维数组列表
- php - Dockerfile 和 yml 配置
- coldfusion - ColdFusion 10 与 ColdFusion 2018 - 输出速度差异
- javascript - 尝试使用 javascipt 创建共享点文档库时出现 JSON 无效错误