【问题标题】:Heroku Web Server Won't Start LocallyHeroku Web 服务器不会在本地启动
【发布时间】:2016-08-13 08:12:15
【问题描述】:

我在本地启动 heroku 网络服务器时遇到问题。这是我不断收到的错误消息:

PS C:\Users\Dragan\heroku_workspace\python-getting-started> heroku local
[OKAY] Loaded ENV .env File as KEY=VALUE Format
10:01:32 web.1   |  Traceback (most recent call last):
10:01:32 web.1   |    File "c:\users\dragan\anaconda3\lib\runpy.py", line 170, in _run_module_as_main
10:01:32 web.1   |      "__main__", mod_spec)
10:01:32 web.1   |    File "c:\users\usr1\anaconda3\lib\runpy.py", line 85, in _run_code
10:01:32 web.1   |      exec(code, run_globals)
10:01:32 web.1   |    File 
C:\Users\Dragan\Anaconda3\Scripts\gunicorn.exe\__main__.py", line 5, in <module>
10:01:32 web.1   |    File "c:\users\dragan\anaconda3\lib\site-packages\gunicorn\app\wsgiapp.py", line 10, in <module>
10:01:32 web.1   |      from gunicorn.app.base import Application
10:01:32 web.1   |    File "c:\users\dragan\anaconda3\lib\site-packages\gunicorn\app\base.py", line 12, in <module>
10:01:32 web.1   |      from gunicorn import util
10:01:32 web.1   |    File "c:\users\dragan\anaconda3\lib\site-packages\gunicorn\util.py", line 9, in <module>
10:01:32 web.1   |      import fcntl
10:01:32 web.1   |  ImportError: No module named 'fcntl'
[DONE] Killing all processes with signal  null
10:01:33 web.1   Exited with exit code 1

我正在遵循本教程LINK 中描述的每个步骤 我在项目“python-getting-started”中安装了虚拟环境。我正在尝试从项目的根目录启动本地 Web 服务器。

谁能帮我解决这个问题?

UPDATE_1:我已经安装了适用于 Windows 的 Heroku Toolbelt,并且我已经安装了适用于 Python 的 Anaconda。

【问题讨论】:

  • Gunicorn 不支持 Windows。详情请见github.com/benoitc/gunicorn/issues/524
  • @KlausD. 这个问题有什么解决办法吗?我无法从链接中的信息中获得任何信息。
  • @KlausD.顺便说一句,我还安装了 heroku 网站上建议的“Heroku Toolbelt for Windows”。因此,我认为这些组件应该包含在工具带中。对吗?

标签: python heroku


【解决方案1】:

根据 Heroku 教程,在 Windows 中试试这个,而不是 heroku local

heroku local web -f Procfile.windows

https://devcenter.heroku.com/articles/getting-started-with-python#run-the-app-locally

【讨论】:

    【解决方案2】:

    您正在尝试使用 gunicorn Web 服务器将 Python Web 应用程序部署到 Heroku。这在 Heroku 上运行良好,但在 Windows 上无法运行,因为 gunicorn 只能在基于 *nix 的操作系统上运行。

    除了运行heroku local,您还可以在本地运行您的网络服务器而不使用 gunicorn。简单地说类似$ python myapp.py 或者你的主要python web 服务器文件是什么。这将仅使用 Python 而不是 gunicorn 在本地启动您的服务器。

    【讨论】:

      【解决方案3】:

      @vkc 的回答正确但不完整。

      如文档所述,我们应该在 windows 上使用heroku local web -f Procfile.windows 命令在本地运行我们的应用程序。

      这个命令只是意味着在本地运行应用程序并使用Procfile.windows 作为 Procfile 而不是默认的('Procfile')。

      所以要让它工作,我们需要在项目的根目录下创建一个名为Procfile.windows 的文件,并将这一行添加到其中;

      web: python manage.py runserver 0.0.0.0:5000
      

      这意味着在端口 5000 上运行服务器。

      此外,在此之前,我们需要在 .env 文件中本地提供环境变量(如果有)。

      我们可以通过运行这个命令来获取我们的环境变量列表;

      heroku config
      

      复制结果并创建一个.env 文件并将结果粘贴到其中。

      另外别忘了正确设置变量;

      VAR_NAME=VAR_VALUE (no quotes required)
      

      将此文件添加到.gitignore

      之后,运行此命令;

      python manage.py collectstatic
      

      你可以走了。

      【讨论】:

        猜你喜欢
        • 2016-09-09
        • 1970-01-01
        • 2013-06-19
        • 2013-11-14
        • 2017-05-29
        • 1970-01-01
        • 2019-02-08
        • 2023-03-17
        • 1970-01-01
        相关资源
        最近更新 更多