اذهب إلى المحتوى

السؤال

نشر

لدي سكريبت بسيط للغاية requests.py ويحتوي على التالي:

import requests

res = requests.get('http://www.google.com.eg')

print(res)

عند تشغيل الملف يظهر لدي الخطأ التالي:

Traceback (most recent call last):
  File ".\requests.py", line 1, in <module>
    import requests
  File "C:\Users\Adam\OneDrive\Desktop\requests.py", line 3, in <module>
    res = requests.get('http://www.google.ca')
AttributeError: partially initialized module 'requests' has no attribute 'get' (most likely due to a circular import)

جربت أن أعيد تثبيت المكتبة أكثر من مرة ولكن مازالت تظهر نفس المشكلة، ثم قمت بتغير سطر إستدعاء المكتبة ليكون كالتالي:

from requests import get

res = get('http://www.google.com.eg')

print(res)

فظهر لي خطأ مختلف كالتالي:

Traceback (most recent call last):
  File ".\requests.py", line 1, in <module>
    from requests import get
  File "C:\Users\Adam\OneDrive\Desktop\requests.py", line 1, in <module>
    from requests import get
ImportError: cannot import name 'get' from partially initialized module 'requests' (most likely due to a circular import) (C:\Users\Adam\OneDrive\Desktop\requests.py)

ما سبب هذا الخطأ؟ هل هناك مشكلة في إصدار بايثون 3.8 لدي؟

Recommended Posts

  • 1
نشر

تحدث مشكلة circular import عندما تتضارب الاعتماديات، أي وجود ملف لدينا في مشروعنا بنفس اسم المكتبة لذلك لحل المشكلة أرجو تغيير اسم الملف requests لديك.

يمكنك التأكد من الملف المضمن بتنفيذ الشيفرة:

print dir(requests)

في حال أن الاستدعاء يعمل مع المكتبة requests وليس الملف الخاص بمشروعك، سيظهر التالي:

['ConnectionError', 'HTTPError', 'Request', 'RequestException', 'Response', 'Session',
'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__',
'__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__',
'__path__', '__title__', '__version__', '_oauth', 'api', 'auth', 'certs', 'codes',
'compat', 'cookies', 'defaults', 'delete', 'exceptions', 'get', 'head', 'hooks',
'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'safe_mode',
'session', 'sessions', 'status_codes', 'structures', 'utils']

جميع دوال المكتبة.

___________________

عند التضمين باستخدام:

import requests

نستعمل 

requests.get

أما:

from requests import *

نستعمل 

get

لأنه تم تضمين جميع فضاء العيبنة في الطريقة الثانية فيمكن استخدام get مباشرة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...