python ImportError: невозможно импортировать имя 'Faker' из 'faker'
Привет , поэтому я писал этот сценарий для предварительного заполнения своей базы данных Django, но когда я перестал ее писать, я получил странную ошибку: Мой сценарий:
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_project.settings')
import django
django.setup()
## FAKE POPULATION SCRIPT:
import random
from first_app.models import AccessRecord,Webpage,Topic
from faker import Faker
# Creating a fake generator:
fakegen = Faker
topics = ['Search', 'Social', 'Marketplace', 'News', 'Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N = 5):
for entry in range(N):
# GET THE TOPIC FOR THE ENTRY:
top = add_topic()
# Create the fake data for that entry:
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()
# Create the new webpage entry:
webpg = Webpage.objects.get_or_create(topic = top, url = fake_url, name = fake_name)[0]
# Create a fake access record for that webpage
acc_rec = AccessRecord.get_or_create(name = webpg, date = fake_date)[0]
if __name__ == '__main__':
print("Populating Script!")
populate(20)
print("Populating Complete!")
Ошибка, которую я получаю:
python populate_first_app.py
Traceback (most recent call last):
File "populate_first_app.py", line 11, in <module>
from faker import Faker
File "E:\Python\Projects\Python And Django FullStack\Django\first_project\faker.py", line 1, in <module>
from faker import Faker
ImportError: cannot import name 'Faker' from 'faker'
Я никогда не видел ошибку, подобную этой. Я использую этот скрипт под влиянием виртуальной среды, в которую я уже установил все пакеты. Я уже проверил несколько вещей, таких как удаление и установка библиотеки 'faker', но это не сработало. и я все еще получаю ошибку.
5 ответов
В вашем проекте есть файл с именем "faker.py", который скрывает установленную вами библиотеку. Переименуйте этот файл.
Я попробовал следующее, и это сработало для меня.
Я использовал следующие команды, чтобы удалить Faker и faker (просто чтобы быть уверенным), которые я ранее установил с помощью pip и pip3 из моего venv.
pip uninstall Faker
pip uninstall faker
pip3 uninstall Faker
pip3 uninstall faker
а затем я использовал следующую команду для переустановки Faker в моем venv с помощью conda
conda install -c conda-forge faker
Никогда не создавайте файл python с именем "faker.py" для хранения кода модуля-фейкера, потому что имя фейкера уже доступно в установленных скриптах python. Для получения дополнительной информации вы можете проверить следующую папку "C:\Python 3.7\Scripts". Вы можете дать файлу любое имя, кроме faker ex: one.py или two.py, чтобы сохранить код, связанный с модулем faker.
Следуйте этим инструкциям, и ваша проблема будет исправлена:-
1) убедитесь, что вы установили библиотеку Faker в своем виртуальном окружении, используйте для этого следующую команду:-
pip install Faker
он установит последнюю версию faker на ваш виртуальный env.
2) теперь убедитесь, что вы импортировали его в свой проект следующим образом:-
from faker import Faker
и BINGO ваша проблема исправлена счастливым кодированием:-)
Возможно, вы делаете это в VS-Code, поэтому выберите свою конкретную среду в left_bottom кода vs, выберите среду python, которую вы создали для проекта django.