找不到满足要求的版本lxkeymap == 0.1

时间:2019-05-07 04:55:45

标签: python heroku flask

我正在尝试在Heroku上部署Flask应用。但是在构建时会显示以下错误:

  

找不到满足lxkeymap == 0.1要求的版本

1 个答案:

答案 0 :(得分:0)

正如我提到的,lxkeymap是一个系统应用程序,它是通过apt安装的,不能通过pip使用。如Python Dependencies via Pip中所述,Heroku使用pip安装应用程序的依赖项。

我猜想,当您生成 requirements.txt 文件时,您还包括了系统软件包,可能是通过使用sudo pip freeze还是没有使用Python虚拟环境或您自己手动编写需求文件。

$ sudo apt-get install lxkeymap
$ sudo pip freeze | grep lxkeymap
lxkeymap==0.1

Heroku预期会失败,因为pip install lxkeymap将失败。

这里的解决方案是使用virtual environment来管理应用程序的依赖项。我怀疑Flask应用程序是否需要lxkeymap,因此不应要求将其包含在您的 requirements.txt 文件中(Flask当然不需要它)。您只应直接将应用 需要的那些程序包放进去。

  1. Create and Activate a virtual environment for your app
  2. 根据需要安装软件包(请勿使用sudo ):

    (myflaskenv) myflaskapp$ pip3 freeze  ## This should be initially empty.
    (myflaskenv) myflaskapp$              
    
    (myflaskenv) myflaskapp$ pip3 install Flask
    (myflaskenv) myflaskapp$ pip3 freeze
    Click==7.0
    Flask==1.0.2
    itsdangerous==1.1.0
    Jinja2==2.10.1
    MarkupSafe==1.1.1
    Werkzeug==0.15.2
    
  3. 从虚拟环境中生成您的 requirements.txt (同样,请勿使用sudo
    (myflaskenv) myflaskapp$ pip3 freeze > requirements.txt
    
  4. 在上传到Heroku时,使用虚拟环境中的 requirements.txt 文件。

有关更多信息,请参见Managing packages with pip