Проблемы с файлом .exe после его преобразования из .py. «ModuleNotFoundError: нет модуля с именем «селен»»Python

Программы на Python
Гость
Проблемы с файлом .exe после его преобразования из .py. «ModuleNotFoundError: нет модуля с именем «селен»»

Сообщение Гость »


Выслушайте меня: совсем новичок в Python. Возможно, я где-то накосячил.

Полное сообщение об ошибке:

Traceback (самый последний вызов — последний): Файл «webScrapingTool.py», строка 1, в из веб-драйвера импорта селена ModuleNotFoundError: нет модуля с именем «селен» Я написал код в Ubuntu 22.04, версия Python по умолчанию — 3.10.4. У меня система с двойной загрузкой. Я не осознавал, что мне видимо(?) нужно создать исполняемый файл Windows непосредственно в Windows, поэтому я переместил файл туда и попробовал. Я скачал Python для Windows версии 3.12.2. Насколько я понимаю, возможно, это первая часть проблемы.

Имейте в виду, что я пробовал и «pyinstaller», и «auto-py-to-exe» в Ubuntu, а также пробовал «pyinstaller» в Windows. Когда я создаю исполняемый файл в Windows, он отображает сообщение об ошибке, как указано выше.

Как уже упоминалось, я почти новичок в Python и выполнил довольно простой проект, но мне действительно нужно знать, в чем проблема, наконец, сделать мой файл исполняемым/пригодным для использования обычным человеком.

Это мой код:

из веб-драйвера импорта селена из bs4 импорт BeautifulSoup импортировать панд как pd время импорта импортировать повторно запросы на импорт из selenium.webdriver.common.by импортировать из selenium.webdriver.common.action_chains импортировать ActionChains из selenium.common.Exceptions import StaleElementReferenceException из запросов.исключения импортируют RequestException, Timeout, HTTPError, ConnectionError имя файла = "данные" link = input("Пожалуйста, введите ссылку на Карты Google для очистки: ") браузер = вебдрайвер.Chrome() запись = [] е = [] ле = 0 защита Selenium_extractor(): действие = ActionChains (браузер) предыдущая_длина = 0 a = браузер.find_elements(By.CLASS_NAME, "hfpxzc") в то время как len(a) < 1000: печать(лен(а)) вар = лен(а) последний_элемент = а[-1] action.move_to_element(last_element).perform() браузер.execute_script("аргументы[0].scrollIntoView();", последний_элемент) время.сон(2) a = браузер.find_elements(By.CLASS_NAME, "hfpxzc") пытаться: если len(a) == var: ле += 1 если le > 20 или len(a) == prev_length: перерыв еще: ле = 0 prev_length = len(а) кроме StaleElementReferenceException: продолжать name_processed = False # Флаг, указывающий, обрабатываются ли имена для меня в диапазоне (len(a)): если имена_обработаны: Break # Если имена обрабатываются, выйти из цикла action.move_to_element(a).perform() время.сон(2) источник = браузер.page_source суп = BeautifulSoup(источник, 'html.parser') пытаться: Item_Html = суп.findAll('div', {"класс": "lI9IFe"}) для item_html в Item_Html: Name_Html = item_html.find('div', {"class": "qBF1Pd fontHeadlineSmall"}) имя = Имя_Html.text.strip() если имя не в e: e.append(имя) divs = item_html.findAll('div', {"class": "W4Efsd"}) email_scraped = Ложь для div в div: phone_span = div.find('span', {"class": "UsdlK"}) if phone_span и phone_span.text.strip().startswith("+"): # Проверка условия телефон = phone_span.text.strip() еще: телефон = "Не доступен" Адрес_Html = div[2] адрес_текст = Адрес_Html.get_text().split(' · ') если len(адрес_текст) > 1: адрес = адрес_текст[1].strip() еще: адрес = "Недоступно" если не email_scraped: Website_Html = item_html.find('a', {"class": "lcr4fd S9kvJb"}) для j в диапазоне (len(divs)): если Веб-сайт_Html: сайт = Website_Html.get('href') пытаться: веб-сайт_источник = запросы.get(веб-сайт, тайм-аут = 10).текст emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\ б', источник_сайта) emails = [адрес электронной почты в электронных письмах, если не email.endswith('.wixpress.com')] электронные письма = список (набор (электронные письма)) если не электронная почта: электронная почта = «Недоступно» еще: email_scraped = Истина кроме (Timeout, ConnectionError), например: print("Ошибка очистки электронной почты с веб-сайта из-за проблем с сетью:", ex) кроме HTTPError, например: print("При доступе к веб-сайту произошла ошибка HTTP:", ex) кроме RequestException, например: print("Произошла ошибка при доступе к сайту:", ex) еще: сайт = "Недоступно" электронная почта = «Недоступно» print([имя, телефон, адрес, сайт, адрес электронной почты]) Record.append([имя, телефон, адрес, веб-сайт, адрес электронной почты]) name_processed = True # Установить флаг, указывающий, что имена обработаны кроме исключения, как например: print("Произошла ошибка:", ex) продолжать печать (запись) возвратная запись браузер.get(str(ссылка)) время.сон(10) Selenium_extractor() df=pd.DataFrame(record,columns=['Название компании', 'Телефон', 'Уличный адрес', 'Веб-сайт', 'Адреса электронной почты']) # запись данных в файл df.to_csv(имя файла + '.csv',индекс=False,кодировка='utf-8') Я могу сказать, что я почти уверен, что это связано с тем, где была написана программа, а не с тем, где создается исполняемый файл (две разные версии Python). Я видел несколько страниц, на которых упоминался «скрытый импорт» в файле .spec, но, судя по некоторым предложениям, мне не повезло. Надеюсь, кто-нибудь точно понимает, что я имею в виду, потому что, хотя здесь есть похожие вопросы, ни один из них не похож на мою ситуацию. Пожалуйста, дайте мне знать обо всем, что я могу сделать, чтобы это исправить. Спасибо!

Вернуться в «Python»