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

PythonAnywhere上Django项目中PyRFC Connection导入失败问题求助

PythonAnywhere上Django项目中PyRFC Connection导入失败问题求助

各位好,我在PythonAnywhere服务器上的Django项目里使用PyRFC库连接SAP系统时碰到了一个棘手的问题,想请大家帮忙分析一下。

具体情况是这样的:我尝试从PyRFC导入Connection类来建立SAP连接,但在views.py里执行导入操作时总是触发ImportError;可奇怪的是,同样的代码在Django shell里却能完全正常运行,Connection类也能顺利导入使用,这让我完全摸不着头脑。

先给大家说说不同导入方式下的错误表现:

  1. 如果我没有显式导入,直接在代码里使用Connection,会得到这个错误:

SAP Connection failed: name 'Connection' is not defined

  1. 当我显式写from pyrfc import Connection时,WSGI应用就会崩溃,日志里的错误信息如下:
2025-01-22 07:28:52,598: Error running WSGI application
2025-01-22 07:28:52,599: ImportError: cannot import name 'Connection' from 'pyrfc' (/home/moeez007/.local/lib/python3.10/site-packages/pyrfc/__init__.py)
2025-01-22 07:28:52,599:   File "/var/www/moeez007_pythonanywhere_com_wsgi.py", line 80, in <module>
2025-01-22 07:28:52,600:     from pyrfc import Connection

为了解决这个问题,我已经做了这些尝试:

  • 反复确认了SAP_NWRFC_HOME和LD_LIBRARY_PATH这两个环境变量的路径是正确的,而且libsapnwrfc.so库在shell环境下能成功加载;
  • 尝试在项目的WSGI文件里直接设置这两个环境变量,代码如下:
import os
os.environ["SAP_NWRFC_HOME"] = "/home/moeez007/nwrfcsdk"
os.environ["LD_LIBRARY_PATH"] = "/home/moeez007/nwrfcsdk/lib"

但设置完成后重新部署,问题依然没有解决;

  • 我还把连接SAP的代码单独抽出来写成一个独立的Python脚本运行,结果还是触发了和视图里一样的ImportError。

最后附上我views.py里的连接测试视图代码,供大家参考:

import pyrfc
from pyrfc import *
import logging
logger = logging.getLogger(__name__)


def sap_conn_test(request):
 if request.method == "GET":
    try:
        print(os.environ.get("SAP_NWRFC_HOME"))
        print(os.environ.get("LD_LIBRARY_PATH"))
        sap_conn = XPL_SAP_CON.objects.first()
        conn = Connection(
            user=sap_conn.user_name,
            passwd=sap_conn.password,
            ashost=sap_conn.server_address,
            sysnr=sap_conn.system_number,
            client=sap_conn.client_number,
        )
        response = {
            "message": "SAP Connection successful!",
            "status": "success"
        }
    except Exception as e:
        response = {
            "message": f"SAP Connection failed: {e}",
            "status": "error"
        }
    return JsonResponse(response)
return JsonResponse({"message": "Invalid request method.", "status": "error"})

真心请教各位,为什么同样的代码在Django shell里能正常工作,到了WSGI应用(视图/独立脚本)里就会出现Connection导入失败的问题呢?有没有什么我漏掉的排查点或者解决办法?

备注:内容来源于stack exchange,提问作者Moeez Bin Nadeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:38:02