没有名为 streamlit.__main__ 的模块; ‘streamlit’是一个包,不能直接执行

Posted

技术标签:

【中文标题】没有名为 streamlit.__main__ 的模块; ‘streamlit’是一个包,不能直接执行【英文标题】:No module named streamlit.__main__; ‘streamlit’ is a package and cannot be directly executed 【发布时间】:2020-04-08 04:34:36 【问题描述】:

当我尝试将 streamlit 部署到 heroku 时,出现以下错误。我该如何解决?

没有名为 streamlit.main 的模块; ‘streamlit’是一个包,不能直接执行

【问题讨论】:

【参考方案1】:

streamlit 命令位于您的 virtualenv 的 bin/ 文件夹中。看起来pipenv run 没有在该文件夹中查找,而是在找到名为 streamlit 的 ,并尝试执行它。

如果没有看到您的 Heroku 部署的详细信息,很难提供解决此问题的具体建议。但从您的屏幕截图来看,您似乎是在 pipenv 外壳中执行此命令。由于您已经在 shell 中,您不需要使用pipenv run streamlit run ... 来运行streamlit 命令;激活 shell 意味着 streamlit 命令已经在你的 $PATH 上。

当你激活了 shell 时,这样做应该可以代替:

streamlit run iris_eda_app.py

或者,您可以放弃 pipenv 并直接管理您的 virtualenv。我整理了一个可部署到 Heroku 的 Streamlit 应用程序的最小工作示例。它使用普通的requirements.txt 文件而不是Pipfile:https://github.com/tconkling/streamlit_heroku_example

【讨论】:

【参考方案2】:

这对你也有用..python -m streamlit.cli iris_eda_app.py

【讨论】:

【参考方案3】:

我试过了,这对我有用:

python -m streamlit.cli run path/to/your/app.py

【讨论】:

以上是关于没有名为 streamlit.__main__ 的模块; ‘streamlit’是一个包,不能直接执行的主要内容,如果未能解决你的问题,请参考以下文章

没有名为 pipreqs.__main__ 的模块; 'pipreqs' 是一个包,不能直接执行

python - 了解 ModuleNotFoundError:没有名为“__main__.xxx”的模块(相对导入)[重复]

pip install 出错:“没有名为 pip.__main__ 的模块”[重复]

在标准输入上使用相对导入的Python 3脚本给出错误:没有名为'__main__.XXX'的模块; '__main__'不是包

“ __conform__() 不是有效的 Streamlit 命令。”

if __name__ == '__main__'的作用和原理