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

Flask中移动Python脚本后无法导入ip.py的问题求助

解决Flask中导入/scripts/目录下Python模块的问题

我来帮你梳理下问题的根源和正确的解决方式:

首先先确认几个关键前提:

  • 确保/scripts/python/IP/目录下存在__init__.py文件(哪怕是空文件也可以),这是Python识别包结构的必要条件,你之前的代码能正常运行说明原来的目录里有这个文件,移动后别漏掉它。
  • 检查Flask运行的用户(比如部署时常用的www-data)是否有读取/scripts/python/目录下所有文件的权限,500错误很大概率是权限不足导致无法加载模块。

接下来调整你的代码,不要在请求处理函数内部添加sys.path——每次请求都会执行这段代码,既不优雅还可能引发潜在的线程问题,应该在Flask应用初始化的最顶部添加路径:

# flask.py 顶部的初始化代码
import sys
# 将/scripts/目录添加到Python的模块搜索路径中
sys.path.append('/scripts/')

from flask import Flask
app = Flask(__name__)

# 你的路由处理逻辑
@app.route('/ipcheck', methods=['POST'])
def ip_check():
    from python.IP import ip
    return ip.check_ip_range()

如果你想让导入路径更简洁,也可以直接把/scripts/python/添加到搜索路径,这样导入时可以省去python前缀:

import sys
sys.path.append('/scripts/python/')

from flask import Flask
app = Flask(__name__)

@app.route('/ipcheck', methods=['POST'])
def ip_check():
    from IP import ip
    return ip.check_ip_range()

另外,如果你的服务器开启了SELinux(常见于CentOS/RHEL类系统),可能会阻止Web服务访问/scripts/目录,这时候可以用以下命令调整目录的安全上下文:

chcon -R -t httpd_sys_content_t /scripts/

最后,重启你的Flask应用或者Web服务器,测试/ipcheck接口应该就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:44:37