در این مطلب، ویدئو چگونه مشکل را برطرف کنیم: “ImportError: نمی توان نام X” را در پایتون وارد کرد؟ با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:31
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,240 –> 00:00:02,240
سلام pinksters
2
00:00:02,240 –> 00:00:04,400
امروز به شما توضیح خواهم داد که چگونه
3
00:00:04,400 –> 00:00:07,200
یک نوع خطای وارد کردن در پایتون را برطرف کنید
4
00:00:07,200 –> 00:00:10,639
که می گوید نمی توان نام x را وارد کرد
5
00:00:10,639 –> 00:00:13,440
در اینجا x نام ماژولی است
6
00:00:13,440 –> 00:00:15,440
که اکنون می خواهید وارد کنید
7
00:00:15,440 –> 00:00:17,359
چند راه وجود دارد که می
8
00:00:17,359 –> 00:00:20,080
توانید برای رفع این خطا از استفاده کنید، اما قبل از
9
00:00:20,080 –> 00:00:22,480
بررسی راههای رفع این
10
00:00:22,480 –> 00:00:24,720
خطا، اجازه دهید سعی کنیم و درک کنیم که چرا این
11
00:00:24,720 –> 00:00:26,480
خطا اکنون رخ میدهد،
12
00:00:26,480 –> 00:00:29,439
قبل از هر چیز اجازه دهید بفهمیم
13
00:00:29,439 –> 00:00:31,920
چه زمانی خطای import به طور کلی
14
00:00:31,920 –> 00:00:33,280
رخ
15
00:00:33,280 –> 00:00:35,920
میدهد، اگر عبارت ورودی در زبان شما باشد، خطای import در پایتون رخ میدهد.
16
00:00:35,920 –> 00:00:38,000
17
00:00:38,000 –> 00:00:41,360
کد در وارد کردن موفقیت آمیز یک ماژول با مشکل مواجه
18
00:00:41,360 –> 00:00:43,120
می شود و
19
00:00:43,120 –> 00:00:45,760
اکنون معمولاً چنین مشکلی
20
00:00:45,760 –> 00:00:49,120
به دلیل نصب معیوب یک
21
00:00:49,120 –> 00:00:52,800
کتابخانه خارجی یا یک مسیر نامعتبر
22
00:00:52,800 –> 00:00:55,440
به ماژولی است که اکنون می خواهید وارد
23
00:00:55,440 –> 00:00:57,440
کنید، این ما را به این سؤال می رساند که
24
00:00:57,440 –> 00:01:00,559
چه زمانی خطای import نمی تواند انجام شود. نام import
25
00:01:00,559 –> 00:01:02,239
x رخ میدهد
26
00:01:02,239 –> 00:01:04,319
این نوع خطای import معمولاً
27
00:01:04,319 –> 00:01:06,479
زمانی رخ میدهد که کلاسی
28
00:01:06,479 –> 00:01:09,119
که میخواهید وارد کنید در یک وابستگی دایرهای باشد،
29
00:01:09,119 –> 00:01:10,960
30
00:01:10,960 –> 00:01:13,280
حالا این به چه معناست که چیست؟
31
00:01:13,280 –> 00:01:15,439
وابستگی دایره ای است
32
00:01:15,439 –> 00:01:18,000
وابستگی دایره ای معمولاً زمانی اتفاق می افتد
33
00:01:18,000 –> 00:01:21,759
که دو ماژول سعی می کنند به طور همزمان یکدیگر را وارد کنند
34
00:01:21,759 –> 00:01:22,680
35
00:01:22,680 –> 00:01:25,759
به طوری که هر دوی آنها
36
00:01:25,759 –> 00:01:28,240
به یکدیگر وابسته هستند
37
00:01:28,240 –> 00:01:30,880
اکنون برای توضیح بیشتر این موضوع
38
00:01:30,880 –> 00:01:33,200
باید به یک مثال نگاهی بیندازیم، بنابراین بدون
39
00:01:33,200 –> 00:01:34,960
تأخیر بیشتر اجازه دهید نگاهی به یک مثال بیندازیم.
40
00:01:34,960 –> 00:01:37,920
مثالی برای درک اینکه چگونه و چه زمانی این
41
00:01:37,920 –> 00:01:40,240
خطا رخ می دهد
42
00:01:40,240 –> 00:01:42,799
خوب حالا فرض کنید ما چند ماژول داریم که
43
00:01:42,799 –> 00:01:44,240
44
00:01:44,240 –> 00:01:48,320
این ماژول ها x dot py و y dot py هستند،
45
00:01:48,320 –> 00:01:50,000
حالا قبل از اینکه وارد دستورات import
46
00:01:50,000 –> 00:01:52,560
شویم، اجازه دهید نگاهی به
47
00:01:52,560 –> 00:01:55,200
محتویات این ماژول ها
48
00:01:55,200 –> 00:01:56,880
بیندازیم و سپس آن را انجام خواهیم داد. به عبارات import نگاه کنید،
49
00:01:56,880 –> 00:01:59,520
همانطور که می
50
00:01:59,520 –> 00:02:02,719
بینید ماژول y دارای چند تابع است
51
00:02:02,719 –> 00:02:05,200
که عبارتند از y زیرخط 1 و y
52
00:02:05,200 –> 00:02:09,360
زیرخط 2. به طور مشابه ماژول x دارای
53
00:02:09,360 –> 00:02:12,000
یک تابع واحد است که به نام
54
00:02:12,000 –> 00:02:14,640
x underscore one می باشد،
55
00:02:14,640 –> 00:02:16,160
حال اجازه دهید به واردات برویم.
56
00:02:16,160 –> 00:02:18,879
عبارات همانطور که می بینید
57
00:02:18,879 –> 00:02:22,080
در ماژول y ما x
58
00:02:22,080 –> 00:02:23,760
زیرخط 1 را
59
00:02:23,760 –> 00:02:26,239
از ماژول x وارد می کنیم
60
00:02:26,239 –> 00:02:29,120
، همانطور که می بینید x زیرخط
61
00:02:29,120 –> 00:02:32,800
1 بخشی از این ماژول است که x است پس ما
62
00:02:32,800 –> 00:02:36,000
t هستیم در تلاش برای وارد کردن این تابع از
63
00:02:36,000 –> 00:02:38,319
این ماژول که x است
64
00:02:38,319 –> 00:02:39,760
به طور مشابه
65
00:02:39,760 –> 00:02:41,920
در ماژول x، ما سعی می کنیم
66
00:02:41,920 –> 00:02:45,120
تابع y زیرخط 2 را وارد کنیم
67
00:02:45,120 –> 00:02:49,440
که بخشی از ماژول y است، بنابراین
68
00:02:49,440 –> 00:02:53,599
از دستور y import y underscore دو استفاده می کنیم،
69
00:02:53,599 –> 00:02:56,400
اکنون اجازه دهید روی ماژول y
70
00:02:56,400 –> 00:02:57,680
همانطور که می بینید
71
00:02:57,680 –> 00:03:00,720
تابع y زیرخط یک به صورت یک
72
00:03:00,720 –> 00:03:02,560
چاپ می شود
73
00:03:02,560 –> 00:03:05,120
و سپس تابع x زیرخط یک بارگذاری می شود
74
00:03:05,120 –> 00:03:08,239
و جایی که x زیرخط
75
00:03:08,239 –> 00:03:11,599
یک x زیرخط است یک از ماژول x وارد شده است
76
00:03:11,599 –> 00:03:13,680
،
77
00:03:13,680 –> 00:03:16,080
بنابراین این x زیرخط یک در
78
00:03:16,080 –> 00:03:19,200
ماژول x است. بنابراین باید
79
00:03:19,200 –> 00:03:22,319
x 1 چاپ شود و سپس یک بار دیگر
80
00:03:22,319 –> 00:03:25,599
x underscore 1 روش y underscore 2 را فراخوانی می کند
81
00:03:25,599 –> 00:03:27,120
82
00:03:27,120 –> 00:03:30,959
اما y underscore 2 اکنون دوباره بخشی
83
00:03:30,959 –> 00:03:32,400
از مدل y است
84
00:03:32,400 –> 00:03:35,840
بنابراین همانطور که می بینید هر دو ماژول
85
00:03:35,840 –> 00:03:38,799
به یکدیگر وابسته هستند اکنون در این
86
00:03:38,799 –> 00:03:41,840
مورد زمانی که شما از عبارتی مانند این استفاده می کنید
87
00:03:41,840 –> 00:03:44,720
در حالی که از x import x
88
00:03:44,720 –> 00:03:48,000
زیرخط 1 و از y import y
89
00:03:48,000 –> 00:03:49,440
زیرخط
90
00:03:49,440 –> 00:03:52,400
2 است،
91
00:03:52,400 –> 00:03:56,159
اگر ماژول y
92
00:03:56,159 –> 00:03:58,560
خروجی مورد انتظار یا خروجی را که
93
00:03:58,560 –> 00:04:00,400
ex هستیم اجرا کنیم، اکنون وابستگی دایره ای رخ می دهد. Pecting باید چیزی
94
00:04:00,400 –> 00:04:04,720
شبیه به این y1 باشد زیرا y1 در
95
00:04:04,720 –> 00:04:07,360
ابتدا فراخوانی می شود سپس به
96
00:04:07,360 –> 00:04:09,200
تابع x underscore one که
97
00:04:09,200 –> 00:04:12,799
بخشی از ماژول x است می رویم بنابراین خروجی بعدی
98
00:04:12,799 –> 00:04:16,399
باید x1 باشد و در نهایت
99
00:04:16,399 –> 00:04:18,478
تابع y را زیر خط 2 فراخوانی می کنیم.
100
00:04:18,478 –> 00:04:23,280
بخشی از ماژول y بنابراین باید my 2 را چاپ کند،
101
00:04:23,280 –> 00:04:26,000
بنابراین این همان چیزی است که ما سعی می کنیم آن را چاپ کنیم،
102
00:04:26,000 –> 00:04:26,720
اما
103
00:04:26,720 –> 00:04:29,360
تا زمانی که این خروجی را هنگام
104
00:04:29,360 –> 00:04:31,520
اجرای کد دریافت کنیم، بیایید جلوتر برویم و متوجه شویم که
105
00:04:31,520 –> 00:04:33,600
106
00:04:33,600 –> 00:04:36,479
خوب است، زیرا می بینید
107
00:04:36,479 –> 00:04:39,360
که یک خطای import داریم که میگوید
108
00:04:39,360 –> 00:04:42,320
نمیتوان x زیرخط یک را از
109
00:04:42,320 –> 00:04:45,199
ماژول نیمه اولیه وارد کرد،
110
00:04:45,199 –> 00:04:48,800
بنابراین این عمدتاً به دلیل وابستگی دایرهای رخ میدهد،
111
00:04:48,800 –> 00:04:51,440
112
00:04:51,440 –> 00:04:53,520
اکنون ممکن است برخی از شما هنوز بپرسید
113
00:04:53,520 –> 00:04:56,880
که این وابستگی دایرهای دقیقاً چیست،
114
00:04:56,880 –> 00:04:59,759
به بیان ساده، مشکل رخ میدهد
115
00:04:59,759 –> 00:05:02,320
زیرا ما در تلاش برای دسترسی به
116
00:05:02,320 –> 00:05:05,360
محتویات یک ماژول هستیم. از ماژول دیگری
117
00:05:05,360 –> 00:05:06,639
118
00:05:06,639 –> 00:05:08,479
و بالعکس
119
00:05:08,479 –> 00:05:11,840
قبل از اینکه محتویات ماژول
120
00:05:11,840 –> 00:05:14,320
آماده یا مقداردهی اولیه شود،
121
00:05:14,320 –> 00:05:16,320
اگر به این ماژول نگاهی بیندازید
122
00:05:16,320 –> 00:05:19,680
که ماژول y است، ما سعی می کنیم
123
00:05:19,680 –> 00:05:23,600
تابع x unde را وارد کنیم. rscore 1 از x
124
00:05:23,600 –> 00:05:24,400
قبل از
125
00:05:24,400 –> 00:05:27,759
x underscore یک مقداردهی اولیه
126
00:05:27,759 –> 00:05:30,800
شده است، یعنی زمانی که برنامه شروع می شود،
127
00:05:30,800 –> 00:05:34,160
پایتون هنوز در حال مقداردهی اولیه
128
00:05:34,160 –> 00:05:38,080
محتویات ماژول x است، اما ما
129
00:05:38,080 –> 00:05:40,160
زمان کافی به پایتون برای مقداردهی اولیه
130
00:05:40,160 –> 00:05:43,280
تابع x1 نمی دهیم و مستقیماً
131
00:05:43,280 –> 00:05:47,360
آن را فراخوانی می کنیم، بنابراین با آن مواجه شدیم. این خطای import
132
00:05:47,360 –> 00:05:49,600
نیز در این مورد که در ماژول x است،
133
00:05:49,600 –> 00:05:52,479
ما در حال انجام کاری مشابه
134
00:05:52,479 –> 00:05:54,960
هستیم، به پایتون زمان کافی برای
135
00:05:54,960 –> 00:05:57,440
مقداردهی اولیه محتویات تابع
136
00:05:57,440 –> 00:06:00,639
y زیرخط 2 نمی دهیم که یک بار دیگر منجر
137
00:06:00,639 –> 00:06:02,560
به خطای import می شود،
138
00:06:02,560 –> 00:06:04,720
اکنون سوال اینجاست که پایتون خواهد شد.
139
00:06:04,720 –> 00:06:08,319
هر بار که
140
00:06:08,319 –> 00:06:11,680
از دستورهای from و import برای وارد
141
00:06:11,680 –> 00:06:15,120
کردن محتویات یک ماژول به ماژول دیگر استفاده میکنیم، خطای import را پرتاب
142
00:06:15,120 –> 00:06:16,720
143
00:06:16,720 –> 00:06:19,520
میکنیم، پاسخ این است خیر.
144
00:06:19,520 –> 00:06:21,360
145
00:06:21,360 –> 00:06:23,440
146
00:06:23,440 –> 00:06:27,280
هنگامی که
147
00:06:27,280 –> 00:06: