Python 3.7中TypeError:int()参数为NoneType的报错原因咨询
为什么会出现
TypeError: int() argument must be a string... not 'NoneType'? 嘿,这个问题我之前调试的时候也踩过坑!其实原因特别直接:os.getenv('PORT')没有找到名为PORT的环境变量,所以返回了None,而int()函数根本没法把None转换成整数,这就触发了这个错误。
几种靠谱的解决办法
- 先确保环境变量已设置:在运行你的Python脚本之前,得先在终端里把
PORT环境变量设好。比如:- Linux/macOS终端:
export PORT=5000 - Windows CMD:
set PORT=5000 - Windows PowerShell:
$env:PORT=5000
- Linux/macOS终端:
- 给
os.getenv加默认值兜底:如果不想依赖外部环境变量,或者担心别人运行时忘了设置,可以直接给os.getenv传第二个参数当默认值——这样就算PORT不存在,也不会返回None了:import os port = int(os.getenv('PORT', 5000)) # 没找到PORT就用5000当默认端口 print("Starting app on port %d" % port) - 提前做
None判断+异常处理:要是需要更细致的逻辑(比如给用户提示错误),可以先检查返回值是不是None,再尝试转换,还能处理用户设了非整数的情况:import os port_env = os.getenv('PORT') if port_env is None: print("⚠️ PORT环境变量没设置哦,将使用默认端口5000") port = 5000 else: try: port = int(port_env) print("Starting app on port %d" % port) except ValueError: print("❌ PORT环境变量的值不是有效的整数,请检查你的设置!") # 这里可以加后续处理,比如退出程序或者改用默认值
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

