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

Power BI连接Python超时求助:脚本无法运行问题排查

Power BI调用Python脚本卡在连接加载界面的解决思路

问题背景

重装Windows版Python 3.11后,Power BI运行Python脚本时持续卡在“Please wait while we establish a connection to python”加载窗口,无法推进。已重装Power BI,脚本在Python IDE中可正常执行,系统无其他Python版本,环境变量配置无误。

排查与解决思路

  • 确认Power BI的Python解释器路径
    打开Power BI的「选项和设置」→「选项」→「Python scripting」,手动指定Python 3.11的安装路径(例如C:\Users\<你的用户名>\AppData\Local\Programs\Python\Python311\python.exe),不要依赖自动检测功能。

  • 移除脚本中的交互式依赖
    脚本中使用getpass.getuser()获取用户名,而Power BI的Python运行环境不支持交互式终端,这可能导致阻塞。暂时将该行替换为硬编码的用户名(如username = "你的实际用户名"),测试是否能正常运行。

  • 优化脚本的文件读取逻辑
    当前脚本用openpyxl逐行读取Excel内容,效率极低,若文件夹内文件多或文件大,极易触发超时:

    1. 改用pd.read_excel直接读取「Lessors」工作表,结合openpyxl作为引擎,通过skiprows过滤隐藏行,替代逐行遍历的方式。
    2. 细化文件过滤规则,比如只处理包含特定关键词的xlsx文件,减少不必要的文件处理。
  • 检查OneDrive路径的访问权限
    脚本指向OneDrive同步文件夹,Power BI可能因权限不足无法访问同步文件。建议将测试文件复制到本地非同步目录(如C:\Temp\TestFiles),修改脚本路径后重新测试。

  • 查看Power BI日志定位报错
    前往Power BI日志目录(默认C:\Users\<你的用户名>\AppData\Local\Microsoft\Power BI Desktop\Logs),查找包含「Python」关键词的日志文件,从中提取具体报错信息,定位问题根源。

用户提供的原始脚本

import os
import pandas as pd
import glob
import getpass
from pathlib import Path
from openpyxl import load_workbook
username = getpass.getuser()
print(username)
if username.lower() == "xxxx":
    opra = (r"C:\Users\xxxx\OneDrive - xxxx\OPRA - Documents\Lessor Tracker\Lessor Tracking")
elif username.lower() == "xxxx":
    opra = (r"C:\Users\xxxx\OneDrive - xxxx\OPRA - Documents\Lessor Tracker\Lessor Tracking")

elif username.lower() == "xxxx":
    opra = (r"C:\Users\xxxx\OneDrive - xxxx\OPRA - Documents\Lessor Tracker\Lessor Tracking")

else:
    opra = (r"C:\Users\xxxx\OneDrive - xxxx\OPRA - Documents\Lessor Tracker\Lessor Tracking")
os.chdir(opra)
cwd = os.path.abspath(opra)
print(cwd)
files = os.listdir(opra)  

## Method 1 gets the first sheet of a given file
df = pd.DataFrame()
for file in files:
    r=0    
    if file.endswith('.xlsx'):
        print(file)
        wb = load_workbook(file) # use the actual path of your workbook
        ws = wb.get_sheet_by_name(name = 'Lessors') 
        data = []
        # iterate over all the rows in the sheet
        for row in ws: 
           if ws.row_dimensions[row[0].row].hidden == False:
             row_values = [cell.value for cell in row]
             data.append(row_values)
             jd = pd.DataFrame(data[1:], columns=data[0])
             r=r+1
             wbn = str(file) + str(r)
             jd.insert(6,"Workbook",wbn,False)
    df = df.append(jd, ignore_index=False)
        
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:45:07