繁体   English   中英

如何在python程序中全局共享变量?

[英]How to share a variable globally in python program?

我正在开发一个具有配置的程序。 我需要为测试和程序的正常运行使用其他配置。

我使用manage.py脚本管理所有软件和测试,并且所有测试都在python manage.py test ... (例如: python manage.py test allpython manage.py test db ,...)

要选择我在配置的__init__.py中所做的配置:

is_testing = sys.argv[1] == 'test'
if is_testing:
    from app.config.own import TestConfig as Config
else:
    from app.config.own import Config

然后从该文件导入配置。

但是有时候测试运行程序在argv中排名第一,因此测试在argv [2]中进行,有时我直接通过启动脚本而不是manage.py运行测试。

我的问题是我可以通过哪种方式在整个代码库中共享变量?

谢谢。

您可以从配置类中完全提取确定配置,只需要脚本接受配置路径的CLI arg即可执行。 这将允许使用任何配置。

python manage.py test --config=import.path.to.settings

然后,您将必须将config映射到加载实际模块。 Django会使用其settings文件来执行此操作,您可以参考该文件以获取实现细节


我也建议使用argsparse ,这将使您不必处理sys.argv[1]它提供了类型强制,文档生成,位置和关键字arg支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM