运行FastAPI服务器报错ValueError:源代码字符串不能包含空字节
FastAPI启动报错:ValueError: source code string cannot contain null bytes
问题现象
执行启动命令:
uvicorn main:app --reload
出现核心错误:
ValueError: source code string cannot contain null bytes
重装Python(3.11.2)、FastAPI及Uvicorn后问题仍存在,无法访问http://127.0.0.1:8000。
完整错误日志:
PS C:\Users\obunga\OneDrive\Desktop\py\fastfast> uvicorn main:app --reload INFO: Will watch for changes in these directories: ['C:\\Users\\obunga\\OneDrive\\Desktop\\py\\fastfast'] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [5464] using WatchFiles Process SpawnProcess-1: Traceback (most recent call last): File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 314, in _bootstrap self.run() File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 108, in run self._target(*self._args, **self._kwargs) File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started target(sockets=sockets) File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 60, in run return asyncio.run(self.serve(sockets=sockets)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 67, in serve config.load() File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\config.py", line 477, in load self.loaded_app = import_from_string(self.app) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\importer.py", line 21, in import_from_string module = importlib.import_module(module_str) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\obunga\AppData\Local\Programs\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 936, in exec_module File "<frozen importlib._bootstrap_external>", line 1074, in get_code File "<frozen importlib._bootstrap_external>", line 1004, in source_to_code File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed ValueError: source code string cannot contain null bytes
使用的main.py代码:
from fastapi import FastAPI app = FastAPI() @app.get("/") def index(): return {"lyrics": "heyyyyyyyyy"}
错误原因
该错误说明main.py文件中存在空字节(null bytes),常见触发场景:
- 文件保存时编码异常,混入不可见二进制字符
- OneDrive同步过程中损坏了文件(路径包含OneDrive,此概率较高)
- 复制粘贴代码时带入隐藏特殊字符
解决步骤
- 重新创建代码文件:不要直接复制原文件内容,手动重新输入代码,或用纯文本编辑器(如VS Code、Notepad++)新建文件写入代码,彻底清除残留空字节。
- 更换存储路径:将代码文件夹从OneDrive同步目录移到本地非同步目录(如
C:\Users\obunga\Desktop\py\fastfast),避免同步机制损坏文件。 - 检查文件编码:确保
main.py使用UTF-8无BOM格式编码(VS Code右下角可查看/修改编码),BOM头可能被解析为异常字符。 - 禁用重载模式测试:先执行
uvicorn main:app(去掉--reload参数)启动服务,如果能正常运行,说明重载模式的文件监控触发了空字节读取问题,再聚焦修复文件本身。
内容的提问来源于stack exchange,提问作者sohdata
相关产品推荐
相关产品推荐

