SAP Connection failed: имя 'Connection' не определено, PYRFC в django
У меня возникла проблема с библиотекой pyrfc в моем проекте Django, работающем на сервере Pythonanywhere. В частности, я пытаюсь использовать класс Connection из pyrfc для создания соединения с системой SAP, но при попытке импортировать Connection в файл views.py я сталкиваюсь с ошибкой ImportError. Сообщение об ошибке гласит:
SAP Connection failed: name 'Connection' is not defined
Однако, когда я тестирую тот же код в оболочке Django, все работает нормально, и класс Connection импортируется правильно. Я проверил, что переменные окружения SAP_NWRFC_HOME и LD_LIBRARY_PATH установлены правильно, и библиотека libsapnwrfc.so успешно загружается.
Если я сделаю импорт типа
from pyrfc import Connection then it gives the error
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
я также пытался установить переменные окружения в файле wsgi
import os
os.environ["SAP_NWRFC_HOME"] = "/home/moeez007/nwrfcsdk"
os.environ["LD_LIBRARY_PATH"] = "/home/moeez007/nwrfcsdk/lib"
но все равно то же самое, я также пытался запустить это как отдельный файл, но все равно то же самое
почему это работает в оболочке django shell и python, но не работает в представлении?
вот код для моего представления подключения
import pyrfc
from pyrfc import *
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"})