TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是使用 Python 3.7 时的“NoneType”
Posted
技术标签:
【中文标题】TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是使用 Python 3.7 时的“NoneType”【英文标题】:TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' while using Python 3.7 【发布时间】:2020-08-25 02:16:15 【问题描述】:我正在尝试运行下面的简单 sn-p
port = int(os.getenv('PORT'))
print("Starting app on port %d" % port)
我可以理解 PORT 是字符串,但我需要转换为 int。为什么我收到错误
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
【问题讨论】:
您很可能忘记了export PORT
。因此环境中没有PORT
,因此它返回None
此应用是否有合理的默认端口?然后os.getenv('PORT', default_port)
就可以了。
【参考方案1】:
您没有名为 PORT
的环境变量。
os.getenv('PORT')
-> 返回None
-> 尝试将其转换为 int 时抛出异常
在运行脚本之前,在终端中通过以下方式创建环境变量:
export PORT=1234
或者,您可以提供一个默认端口,以防它未定义为您机器上的环境变量:
DEFAULT_PORT = 1234
port = int(os.getenv('PORT',DEFAULT_PORT))
print("Starting app on port %d" % port)
【讨论】:
【参考方案2】:感谢您发表评论并提供解决方案。实际上,我的本地系统中没有分配端口,这就是它的原因。苏都说得对。
【讨论】:
以上是关于TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是使用 Python 3.7 时的“NoneType”的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“DataFrame”
Django TypeError int() 参数必须是字符串或数字,而不是 'QueryDict'
Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”
TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是使用 Python 3.7 时的“NoneType”
Django 保存到 DB:TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“元组”
Paypal - 捕获订单 - 类型错误:strtolower():参数 #1 ($string) 必须是字符串类型,给定 int