ImportError: 'django.utils' থেকে 'ছয়' নাম আমদানি করতে পারে না


48

বর্তমানে, আমি ইতিমধ্যে থেকে জ্যাঙ্গো সংস্করণ আপগ্রেড হয়েছে 2.0.6থেকে 3.0এবং হঠাৎ কলিং পর python manage.py shellকমান্ড এই ত্রুটিটি পেয়েছিলেন:

ImportError: 'django.utils' থেকে 'ছয়' নাম আমদানি করতে পারে না (/path-to-project/project/venv/lib/python3.7/site-packages/django/utils/ init .py)

সম্পূর্ণ ট্রেস:

Traceback (most recent call last):
  File "manage.py", line 13, in <module>
    execute_from_command_line(sys.argv)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 377, in execute
    django.setup()
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/__init__.py", line 1, in <module>
    from .checks import check_settings  # noqa: F401
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/checks.py", line 7, in <module>
    from django.utils import six

অনুরূপ প্রশ্ন:

আমি এই পড়া প্রশ্ন এবং , মুক্তি নোট , কিন্তু সেসব সম্পদ আমাকে সাহায্য করতে পারে না।


2
আপনি এমন একটি প্যাকেজ ব্যবহার করেন corsheadersযা এখনও সরিয়ে নেওয়া মডিউল ব্যবহার করে।
উইলেম ভ্যান অনসেম

1
@ উইলিমভ্যানঅনসেম আপনাকে অনেক ধন্যবাদ, এটি আপগ্রেড করেছে।
মোহাম্মদ মাসুমী

2
@ মোহাম্মদমাসৌমী মূলতঃ from django.utils import sixআপনার কোডে সেগুলি সুস্পষ্ট বিবৃতিগুলি সরিয়ে ফেলুন এবং তারপরে requirements.txtঅভিযোগের মধ্যে থাকা সমস্ত প্যাকেজের সংস্করণগুলিকে বিন্যস্তভাবে বম্প করুন । আমার ক্ষেত্রে আমারও ধাক্কা খেতে হয়েছিল django-nested-adminএবং djangorestframework
রাউল লাসনার 19

আপনি যদি এমন কোনও প্যাকেজ নিয়ে কাজ করছেন যা জাজানো 3.0 এর সাথে কাজ করার জন্য আপডেট করা হয়নি তবে আপনি সাধারণ প্যাচ দিয়ে এটি ঠিক করতে পারেন ।
মনিকা

1
হাই মোহাম্মদ, আপনার সমস্যা কি সমাধান হচ্ছে? সঠিক সমাধান কী?
মোস্তফা গাদিমি

উত্তর:


29

জ্যাঙ্গো release.০.০ রিলিজ নোটস নির্দিষ্ট করে যে নির্দিষ্ট বেসরকারী পাইথন 2 সামঞ্জস্যতা API গুলি সরানো হয়েছিল । এর মধ্যে ছিল django.utils.six

এই ত্রুটির জন্য বিশেষত @ উইলিমভ্যানঅনসেম উল্লেখ করেছে যে মডিউলটি corsheadersএই মডিউলটি উল্লেখ করছে।

অন্যদের জন্য এই একই জিনিসটির মুখোমুখি হওয়া, স্ট্যাকট্রেসের শেষ লাইনে ফাইলের পথটি অনুসন্ধান করা সমস্যাযুক্ত মডিউল সনাক্তকরণে সহায়তা করতে পারে। এর আরেকটি উদাহরণ আমি দেখেছি:

...
File "/path/to/project/venv/lib/python3.8/site-packages/parler/utils/conf.py", line 10, in <module>
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/path/to/project/venv/lib/python3.8/site-packages/django/utils/__init__.py)

এই ক্ষেত্রে সমস্যাটির কারণ হিসাবে তৈরি মডিউলটি ছিল parler। আশা করি এটি এই সমস্যার সাথে মোকাবিলা করা অন্য যে কোনও ব্যক্তিকে সহায়তা করে।


3
দয়া করে নিম্ন জ্যাঙ্গো সংস্করণ ইনস্টল করুন, আমার ক্ষেত্রে আমি জ্যাঙ্গো -২.১.৪ ইনস্টল করেছি।
স্মার্টওয়ার্ল্ড-ডিএম

4
@ স্মার্টওয়ার্ল্ড-ডিএম ডাউনগ্রেডিং জাঙ্গো সংস্করণটি সমস্যার সমাধান করবে, তবে আপনি সর্বদা পুরানো সংস্করণগুলিতে থাকতে পারবেন না, পরিবর্তন অনিবার্য
আরাক্কাল আবু

@ আরাক্কালআবু আসলে আমার প্রকল্পটি জ্যাঙ্গো -২.১.৪ ব্যবহার করছে এবং জ্যাঙ্গো 3.0.০.০ দুর্ঘটনাজনকভাবে ইনস্টল করা হয়েছিল।
স্মার্টওয়ার্ল্ড-ডিএম

লো জাজানো আমার সমস্যার সমাধান করে। মডিউলগুলি তাদের সংস্করণগুলি আপডেট না করা পর্যন্ত আমি অপেক্ষা করব।
হোসে লুইস কুইচিম্বো

21

কেন এই ত্রুটি / ব্যতিক্রম?

থেকে রিলিজ নোট ,

django.utils.six- এই vendored গ্রন্থাগার বা স্যুইচের সরান ব্যবহার ছয়

মানে, থেকেdjango.utils.six মডিউলটি সরানো হয়েছিল ।


আমার কোডবেস " django.utils.six" মডিউলটি ব্যবহার করছে না , তবে এই ত্রুটি কেন?

এই আমদানি ত্রুটি দুটি কারণে উত্থাপিত হতে পারে,

  1. সবচেয়ে গুরুত্বপূর্ণ, আপনার ইনস্টল করা প্যাকেজগুলির মধ্যে কোনও django.utils.sixমডিউলটি ব্যবহার করছে
  2. অথবা django.utils.sixমডিউলটি ব্যবহার করে আপনার কোডবেস

দ্রষ্টব্য: বেশিরভাগ সময় প্রথম কারণ ভিলেন 😖😖 😖😖


কোন প্যাকেজ ত্রুটি / ব্যতিক্রম ঘটছে তা আমি কীভাবে সনাক্ত করতে পারি?

সহজ উপায় হ'ল, আপনার ত্রুটির ট্রেসব্যাকের শেষ কয়েকটি লাইনগুলি দেখুন এবং এটি আপনাকে বলবে যে কোন প্যাকেজটি ব্যতিক্রম ঘটছে।

উদাহরণ

উদাহরণ -1

এই উদাহরণে, corsheadersমডিউল আমদানি ত্রুটির কারণ হয়েছিল

  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/__init__.py", line 1, in 
    from .checks import check_settings  # noqa: F401
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/checks.py", line 7, in 
    from django.utils import six

উদাহরণ-2

এই উদাহরণে, jsonfieldমডিউল আমদানি ত্রুটির কারণ হয়েছিল

  File "d:\production\myproject\venv\lib\site-packages\jsonfield\fields.py", line 21, in 
    from .encoder import JSONEncoder
  File "d:\production\myproject\venv\lib\site-packages\jsonfield\encoder.py", line 2, in 
    from django.utils import six, timezone
ImportError: cannot import name 'six' from 'django.utils' (d:\production\myproject\venv\lib\site-packages\django\utils\__init__.py)

উদাহরণ -3

এই উদাহরণে parlerমডিউলটি আমদানির ত্রুটির কারণ হয়েছিল

...
File "/path/to/project/venv/lib/python3.8/site-packages/parler/utils/conf.py", line 10, in 
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/path/to/project/venv/lib/python3.8/site-packages/django/utils/__init__.py)

উদাহরণ -4

এই উদাহরণে django_mysqlমডিউলটি আমদানির ত্রুটির কারণ হয়েছিল

  File "/home/jerin/.virtualenvs/webscraperio/lib/python3.6/site-packages/django_mysql/checks.py", line 9, in 
    from django_mysql.utils import collapse_spaces
  File "/home/jerin/.virtualenvs/webscraperio/lib/python3.6/site-packages/django_mysql/utils.py", line 17, in 
    from django.utils import six
ImportError: cannot import name 'six'


সমাধান কি?

ত্রুটি কারণ মত কিছু তৃতীয় পক্ষের প্যাকেজ উত্থাপিত তাহলে django-cors-headers, django-jsonfieldইত্যাদি সর্বশেষ সংস্করণ সংশ্লিষ্ট প্যাকেজ সংস্করণ আপগ্রেড

যদি আপনার কোডবেস থেকে ত্রুটি উত্থাপিত হয় তবে মডিউলটির পরিবর্তে ছয়টি প্যাকেজ ব্যবহার করুনdjango.utils.six


7

মোহাম্মদ মাসউমির উল্লেখ অনুসারে, প্যাকেজগুলি আপগ্রেড করা সমস্যার সমাধান করবে কারণ corsheadersএখন জ্যাঙ্গো 3.0 কে সমর্থন করছে।

pip install --upgrade django-cors-headers

আমিও আপগ্রেড djangorestframeworkএবং drf_yasgএই ImportError এড়ানো।


7

আপনাকে কর্স হেডার প্যাকেজ আপডেট করতে হবে:

pip3 install six
pip3 install --upgrade django-cors-headers 

কেবল জাজানো == ২.২ এ ডাউনগ্রেড করা এবং ছয়টি ইনস্টল করা আমার জন্য সমস্যার সমাধান করেছে। কেন আমাদের কর্স-হেডারগুলি আপগ্রেড করতে হবে?
কারণ_িম_ব্যাটম্যান

1
যদি আপনি আপনার জাজানো সংস্করণটি 3.x এ আপগ্রেড করেন তবে আপনাকে কর্স-শিরোনামগুলি আপগ্রেড করার কথা বিবেচনা করা উচিত। এটি অন্য একটি বিকল্প।
শেডরাক

6

প্রথমে পাইপ থেকে ছয়টি ইনস্টল করুন

pip install six

দ্বিতীয়ত, সেটিংস.পিতে

INSTALLED_APPS = [
  'six']

তৃতীয়, কল ছয়

from six import text_type

আমার কাজ করার জন্য, আমার কাছে জ্যাঙ্গো 3.0.০.৪ রয়েছে


5

জাজানোতে django.utils.six ব্যবহার করে এমন অনেকগুলি লাইব্রেরি এবং অ্যাড-অন রয়েছে, যা অবশ্যই এখন ভেঙে গেছে। উদ্বেগের প্রধান এক হ'ল মাইএসকিএল-সংযোজক-পাইথন (8.0.18)। এর সহজ সমাধানটি লাইব্রেরিটি জ্যাঙ্গোর বাহ্যিকভাবে ব্যবহার করা, তবে এই লাইব্রেরির লেখকদের তাদের পরিবর্তনগুলি করা দরকার (অথবা আপনি অস্থায়ীভাবে নিজেই পরিবর্তনগুলি আনতে পারেন .... ছয়টি দিয়ে জঞ্জো.ইটিলস.সিক্স প্রতিস্থাপন করুন)।


4

আমারও একই সমস্যা ছিল।

আমার সমস্যাটি ব্যবহার করছিল:

pip install django_taggit==0.22.2

আমি যখন এটি করেছি তখন এটি সমাধান করেছি:

pip install django_taggit==1.2.0

কারণ এটি সর্বশেষতম সংস্করণ।


2
এই উত্তরটি কার্যকর হতে পারে তবে মূল পোস্টের অধীনে মন্তব্য হিসাবে এটি আরও ভাল কারণ অন্য ব্যক্তিরা ইতিমধ্যে অন্যান্য প্যাকেজগুলি আপগ্রেড করার প্রস্তাব দিয়েছে।
ডিহার্লস

3

ব্যতিক্রম:

 File "/usr/local/lib/python3.8/dist-packages/django/core/management/__init__.py", line 377, in execute
    django.setup()
  File "/usr/local/lib/python3.8/dist-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.8/dist-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/usr/local/lib/python3.8/dist-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.8/dist-packages/django_celery_beat/models.py", line 6, in <module>
    import timezone_field
  File "/usr/local/lib/python3.8/dist-packages/timezone_field/__init__.py", line 1, in <module>
    from timezone_field.fields import TimeZoneField
  File "/usr/local/lib/python3.8/dist-packages/timezone_field/fields.py", line 5, in <module>
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/usr/local/lib/python3.8/dist-packages/django/utils/__init__.py)

সমাধান:

 vi /usr/local/lib/python3.8/dist-packages/timezone_field/fields.py

পরিবর্তন:

from django.utils import six

প্রতি:

import six

2

ভাবেনদের আদর্শ সমাধানটি একটি আপগ্রেড এবং পরিষ্কার ব্যবহার, তবে ভয়াবহ স্ট্রেসে ভাবেন লোকদের জন্য একটি কাজ যথেষ্ট সহজ।

ইন Djangoutils six.py এবং ফাইল করা ভিতরে একটি নতুন ফাইল তৈরি করুন:

import six

দ্রষ্টব্য: সমাধান নয় বরং তাত্ক্ষণিক প্যাচিংয়ের জন্য কার্যকরী


1

জেএসনফিল্ড সমাধান :

আমি ব্যবহৃত jsonfieldএবং jsonfiled2প্যাকেজ। তবে উভয় ক্ষেত্রেই আমি একই ত্রুটির মুখোমুখি হয়েছি।

যখন আমি django-jsonfieldপ্যাকেজ ইনস্টল করেছি এবং বাকী প্যাকেজগুলি (জসনফিল্ড সম্পর্কিত) আনইনস্টল করেছি তখন আমার সমস্যা সমাধান হয়ে গেছে ।

# In case you have installed the following packages, otherwise ignore them.
pip uninstall jsonfield
pip uninstall jsonfield2

pip install django-jsonfield

ব্যবহার :

from django.db import models
from jsonfield import JSONField

class ModelName(models.Model):
    json_field = JSONField()

0

আপনি django 3 ব্যবহার করে থাকেন তবে এই আদেশটি আরও ভালভাবে চালান

pip install six

এটা অনুসারে

https://docs.djangoproject.com/en/3.0/releases/3.0/#removed-private-python-2-compatibility-apis


অনুপস্থিত লিঙ্কটি যুক্ত করুন
বেমিস

আমি ঠিক এখন পর্যন্ত ঠিক লিলঙ্কটি মনে করতে পারি না তবে আমি নিশ্চিত যে এটি এমনই কিছু ছিল ... যাইহোক আপনাকে ধন্যবাদ;)
রডকাল 2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.