【问题标题】:problem with command heroku run -a <name of app> pipenv run upgrade命令 heroku run -a <name of app> pipenv run upgrade 的问题
【发布时间】:2021-07-13 06:28:58
【问题描述】:

我已经用 python flask 编写了一个代码,我正在按照接下来的步骤来部署它:

部署到 Heroku(需要 7 分钟)

  1. 安装heroku(如果你还没有的话)

    $ npm i heroku -g
    
  2. 在命令行上登录 heroku(如果你还没有)

    $ heroku login -i
    
  3. 创建一个应用程序(如果您还没有)

    $ heroku create <your_application_name>
    

环境变量(需要 2 分钟)

现在导航到您的heroku dashboard 并查找您的应用程序设置,我们必须手动将环境变量添加到heroku:

您不能在 Heroku 上创建 .env 文件,而是需要在项目设置下手动创建所有变量。

打开您的.env 文件并将每个变量(FLASK_APP、DB_CONNECTION_STRING 等)复制并粘贴到 Heroku。

将数据库部署到 Heroku(需要 3 分钟)

您的本地 MySQL 数据库现在必须上传到云端,有很多提供 MySQL 数据库托管的服务,但我们推荐 JawDB,因为它有免费层,简单且 100% 与 Heroku 集成。

  1. 转到您的 heroku 项目仪表板并寻找添加新的 heroku 插件。

  2. 查找 JawDB MySQL 并将其添加到您的项目中(它可能会要求您提供信用卡,但只要您的数据库大小保持在 5mb 以内,就不会向您收费,足以进行演示。

  3. 将 JawDB 添加到项目后,在 JawDB 仪表板中查找连接字符串,如下所示:

    mysql://tqqa0ui0cga32nxd:eqi8nchjbpwth82v@c584md9egjnm02sk.5btxwkvyhwsf.us-east-1.rds.amazonaws.com:3306/45fds423rbtbr
    
  4. 复制连接字符串并在您的项目设置中创建一个新的环境变量。

  5. 在 heroku 上运行迁移:连接数据库后,您必须创建表和结构,您可以通过在生产服务器上运行 pipenv run upgrade 命令来实现,如下所示:

    $ heroku run -a=<your_app_name> pipenv run upgrade
    

    :警告:注意:请注意,您必须将&lt;your app name&gt; 替换为您的应用程序名称,您还必须在终端中登录heroku(您可以通过输入heroku login -i 来完成)

    推送到 Heroku 代码库

    提交并推送到heroku,确保您已添加并提交您的更改并推送到heroku

    $ git push heroku main hh
    

    就是这样!

现在问题是当我运行这个命令时:

heroku run -a=<your_app_name> pipenv run upgrade 

回答是:

bash: pipenv: command not found 

这是我的 Pipfile.txt:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
flask = "*"
sqlalchemy = "*"
flask-sqlalchemy = "*"
flask-migrate = "*"
flask-swagger = "*"
psycopg2-binary = "*"
python-dotenv = "*"
mysql-connector-python = "*"
flask-cors = "*"
gunicorn = "*"
mysqlclient = "*"
flask-admin = "*"
cloudinary = "*"
flask-login = "*"
pipenv = "*"

[requires]
python_version = "3.8"

[scripts]
start="flask run -p 3000 -h 0.0.0.0"
init="flask db init"
migrate="flask db migrate"
upgrade="flask db upgrade"
deploy="echo 'Please follow this 3 steps to deploy: https://github.com/4GeeksAcademy/flask-rest-hello/blob/master/README.md#deploy-your-website-to-heroku' "

这些是我在部署之前运行的命令:

pipenv install;
mysql -u root -e "CREATE DATABASE example";
pipenv run init;
pipenv run migrate;
pipenv run upgrade;

如果我不在 heroku 中运行升级,这就是 heroku 中的发布日志:

sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)
(Background on this error at: http://sqlalche.me/e/14/4xp6)

【问题讨论】:

  • 我的猜测是您缺少 pipenv 工具或缺少 PATH。

标签: python mysql flask heroku pipenv


【解决方案1】:

您似乎缺少 pipenv 工具或缺少 PATH。您可以使用以下方式安装它:

$ pip install pipenv

如果 pipenv 已经安装,请检查 PATH 变量,如果您能够使用 $ which pipenv 找到 pipenv。查看有关 PATH 的文档:

【讨论】:

  • 我已经安装了 pipenv,命令 pipenv run init、 pipenv run migrate 和 pipenv run upgrade 和 pipenv --version 一样完美,只是在 heroku run 中它没有响应。我已经托管了这个网站,一切顺利,但这是我第一次,所以我犯了一个错误,不得不从 cero 重新开始,执行完全相同的步骤,现在特定命令不起作用
  • 好的,但很明显这里缺少关于搜索路径的某些内容,否则您将不会收到错误 pipenv: command not found。最大的挑战是找出原因和地点。
  • 你从:$ heroku run echo $PATH 得到什么?和$ heroku run which pipenv?
  • #SOLVED 一切都解决了,感谢支持,我和朋友一起解决了,我必须添加它的 requirements.txt,因为代码已经有一个文件 Procfile 供 heroku 运行突击队 pipenv 运行升级,我不必自己运行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多