命令 heroku 运行 -a <name of app> pipenv 运行 upgrade 有问题
problem with command heroku run -a <name of app> pipenv run upgrade
我已经用 python flask 编写了代码,我正在按照后续步骤部署它:
部署到 Heroku(需要 7 分钟)
安装 heroku(如果您还没有)
$ npm i heroku -g
在命令行上登录到 heroku(如果您还没有)
$ heroku login -i
创建一个应用程序(如果您还没有)
$ 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 集成。
转到您的 heroku 项目仪表板并查看添加新的 heroku 附加组件。
寻找 JawDB MySQL 并将其添加到您的项目中(它可能需要信用卡,但只要您的数据库大小不超过 5mb,就不会向您收费,足够你的演示。
将 JawDB 添加到您的项目后,在您的 JawDB 仪表板中查找连接字符串,例如:
mysql://tqqa0ui0cga32nxd:eqi8nchjbpwth82v@c584md9egjnm02sk.5btxwkvyhwsf.us-east-1.rds.amazonaws.com:3306/45fds423rbtbr
复制连接字符串并在您的项目设置中创建一个新的环境变量。
运行 heroku 上的迁移:连接数据库后,您必须创建表和结构,您可以通过 运行ning pipenv run upgrade
在生产服务器上这样的命令:
$ heroku run -a=<your_app_name> pipenv run upgrade
:warning: 注意:请注意,您必须将 <your app name>
替换为您的应用程序名称,您还必须在终端中登录到 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。您可以使用以下方式安装它:
$ pip install pipenv
如果 pipenv 已经安装,请检查 PATH 变量,以及您是否能够使用 $ which pipenv
找到 pipenv。查看有关 PATH 的文档:
我已经用 python flask 编写了代码,我正在按照后续步骤部署它:
部署到 Heroku(需要 7 分钟)
安装 heroku(如果您还没有)
$ npm i heroku -g
在命令行上登录到 heroku(如果您还没有)
$ heroku login -i
创建一个应用程序(如果您还没有)
$ 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 集成。
转到您的 heroku 项目仪表板并查看添加新的 heroku 附加组件。
寻找 JawDB MySQL 并将其添加到您的项目中(它可能需要信用卡,但只要您的数据库大小不超过 5mb,就不会向您收费,足够你的演示。
将 JawDB 添加到您的项目后,在您的 JawDB 仪表板中查找连接字符串,例如:
mysql://tqqa0ui0cga32nxd:eqi8nchjbpwth82v@c584md9egjnm02sk.5btxwkvyhwsf.us-east-1.rds.amazonaws.com:3306/45fds423rbtbr
复制连接字符串并在您的项目设置中创建一个新的环境变量。
运行 heroku 上的迁移:连接数据库后,您必须创建表和结构,您可以通过 运行ning
pipenv run upgrade
在生产服务器上这样的命令:$ heroku run -a=<your_app_name> pipenv run upgrade
:warning: 注意:请注意,您必须将
<your app name>
替换为您的应用程序名称,您还必须在终端中登录到 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。您可以使用以下方式安装它:
$ pip install pipenv
如果 pipenv 已经安装,请检查 PATH 变量,以及您是否能够使用 $ which pipenv
找到 pipenv。查看有关 PATH 的文档: