【发布时间】:2020-08-15 11:49:18
【问题描述】:
我正在尝试启动服务器并加载已安装模块的 venv。所以基本上我做了一个 start.sh 文件,它是:
export FLASK_APP=wsgi.py
export SECRET_KEY=test
export FLASK_DEBUG=1
export APP_CONFIG_FILE=config.py
export FLASK_RUN_PORT=80
which python3
flask run
哪个python3 - usr/bin/python3
我的 config.py 文件是:
"""Set Flask configuration vars from .env file."""
# General Config
SECRET_KEY = os.environ.get('SECRET_KEY')
FLASK_APP = os.environ.get('FLASK_APP')
FLASK_ENV = os.environ.get('FLASK_ENV')
FLASK_DEBUG = os.environ.get('FLASK_DEBUG')
PERMANENT_SESSION_LIFETIME = timedelta(minutes=30)
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
SQLALCHEMY_TRACK_MODIFICATIONS = os.environ.get('SQLALCHEMY_TRACK_MODIFICATIONS')
所以基本上我使用 sudo sh start.sh 启动我的服务器,但是当我尝试连接到服务器时,它说找不到模块,这意味着它正在使用另一个解释器。当我执行 sudo pip3 install hello-world 时,我通过了一个未找到模块的错误。顺便说一句,我有一个 .env 文件夹,其中包含我的应用程序中安装的所有模块。
【问题讨论】:
-
您必须使用
/your/venv/folder/python3而不是标准的/usr/bin/python3,它可以访问安装在venv中的模块 - 或者您必须先激活venv才能使用@ 获取此路径987654327@ -
我只是在启动时检查 sh 的输出,它为我提供了默认的 python3 位置。我知道你的意思
-
我已经激活了
-
如果 venv 被激活,那么
which python应该会显示不同的 Python 路径。当您使用 venv 时,您不会使用sudo来安装模块。sudo将安装在全局/标准 Python 中,但 venv 中的 Python 不使用为标准 Python 安装的模块。它需要在激活 venv 后安装有pip(或pip3)的自己的模块 -
我应该在 .sh 文件中使用什么命令来激活 venv?
标签: python flask environment-variables sh