添加Streamlit后Nix项目执行nix develop报未定义变量错误
解决Nix项目中Streamlit包未找到的问题
问题原因
错误提示undefined variable 'streamlit',说明当前使用的nixpkgs版本中,Python 3.11的包集合未直接暴露streamlit变量,或flake的nixpkgs输入未更新到包含该包的版本。
解决方法
方法1:明确引用Streamlit包
修改python_packages的定义,直接从pkgs.python311Packages中调用streamlit,绕过作用域问题:
python_packages= python.withPackages(ps: [ ps.ipython ps.matplotlib ps.pandas pkgs.python311Packages.streamlit ]);
方法2:更新nixpkgs输入
如果是nixpkgs分支过旧导致缺少包,执行命令更新输入:
nix flake update
也可以指定包含Streamlit的具体commit版本(可选,提升稳定性):
inputs.nixpkgs.url = "github:NixOS/nixpkgs/[替换为包含Streamlit的commit哈希]";
方法3:使用完整Python包集合
改用python3Full替代python311,获取更完整的第三方库集合:
python=pkgs.python3Full;
之后保持原有的with ps;引用方式即可。
验证修改
修改完成后重新执行:
nix develop
进入shell后测试Streamlit可用性:
streamlit --version
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

