You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用pip安装到虚拟环境后找不到config配置模块如何解决

Flask应用打包部署后config配置文件无法识别解决方案

问题根源

你当前出现报错的核心原因有三个:

  • 打包配置setup.py未将config.py纳入分发文件列表,pip安装时该文件没有被安装到目标虚拟环境中
  • 你在入口文件中添加根目录到系统路径的代码未生效:仅执行了os.path.abspath(os.path.dirname(__file__))计算路径,没有将结果插入sys.path,Python无法搜索到config.py所在的目录
  • app/__init__.py中直接将config作为顶级模块导入,pip安装后config.py的存放位置不在Python默认的模块搜索路径中

可选解决方案

方案一:将配置文件整合到应用包内(推荐,无路径兼容问题)

  • 把项目根目录的config.py移动到app/包目录下
  • 修改app/__init__.py中的配置加载代码,改为导入包内的config模块:
# 顶部导入同包下的config模块
from . import config

# 后续修改配置加载逻辑
app.config['SECRET_KEY'] = 'secret-key-goes-here'
env = app.config['ENV']

if env == "production":
    app.config.from_object(config.Config)
elif env == "development":
    app.config.from_object(config.ConfigDevelopment)
elif env == "local":
    os.environ['AUTHLIB_INSECURE_TRANSPORT'] = '1'
    app.config.from_object(config.ConfigLocal)
  • 确保setup.py中配置了正确的包扫描逻辑,示例:
from setuptools import setup, find_packages

setup(
    name="energy",
    version="1.0",
    packages=find_packages(),
    include_package_data=True,
    # 其他依赖、描述等配置保持不变
)

方案二:保留config.py在项目根目录(方便后续修改配置)

  • 补全入口文件的路径注入代码,将根目录加入Python搜索路径:
import sys
import os
from flask import logging

# 计算入口文件所在的根目录,插入到模块搜索路径最前面
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, BASE_DIR)

from app import app

if __name__ == "__main__":
    gunicorn_logger = logging.getLogger('gunicorn.error')
    app.logger.handlers = gunicorn_logger.handlers
    app.logger.setLevel(gunicorn_logger.level)
    app.run()
  • 修改setup.py,将config.py添加到分发文件列表:
from setuptools import setup, find_packages

setup(
    name="energy",
    version="1.0",
    packages=find_packages(),
    # 将config.py安装到目标环境的根目录
    data_files=[('.', ['config.py'])],
    include_package_data=True,
    # 其他依赖、描述等配置保持不变
)

内容的提问来源于stack exchange,提问作者shalama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:24:05