使用PyGithub+Streamlit构建仓库Web应用时遇导入错误求助
我想编写一个基于Python和Streamlit部署的脚本,用于列出指定GitHub仓库的内容,请问这是否可行?我尝试实现时始终遇到如下报错:
ImportError: cannot import name 'Github' from 'github' (/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/init.py)
Traceback:
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 564, in _run_script
exec(code, module.dict)
File "/Users/blanc/Desktop/My-notes/webpage.py", line 1, in
from github import Github
单独在控制台执行from github import Github语句可正常运行,我已反复确认所需依赖(含对应版本的PyGithub)均已安装,不知还有何解决办法,恳请帮助。
我使用的代码如下:
from github import Github def list_content_repo(): g = Github() # github username username = g.get_user("gitblanc") # Obtain the repository repo = username.get_repo("Obsidian-Notes") print(repo.get_contents(""))
检查Streamlit关联的Python解释器
控制台能正常运行说明默认Python环境已安装PyGithub,但Streamlit可能使用了不同的Python环境。执行streamlit --version查看它绑定的Python版本,再用对应版本的pip确认并安装PyGithub:# 示例:若Streamlit使用Python3.9 python3.9 -m pip install PyGithub排查同名包冲突
存在一个名为github的第三方包(非PyGithub)可能导致导入混淆,先卸载冲突包:pip uninstall github之后重新安装PyGithub:
pip install PyGithub用虚拟环境隔离依赖
创建虚拟环境并激活,在隔离环境中安装所需依赖,避免全局环境的包混乱:# 创建虚拟环境 python3 -m venv streamlit_env # Mac/Linux下激活环境 source streamlit_env/bin/activate # 安装依赖 pip install streamlit PyGithub # 在虚拟环境中运行脚本 streamlit run webpage.py强制指定PyGithub导入路径(临时方案)
若上述方法无效,可在脚本开头添加代码,强制指定PyGithub的安装路径:import sys sys.path.insert(0, '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages') from github import Github
内容的提问来源于stack exchange,提问作者gitblanc

