Я вручную установил библиотеку Python docx в свою папку со скриптами, но не могу ее импортировать?

Вопрос или проблема

По административным причинам я не могу редактировать переменную PATH, поэтому не смог использовать pip для установки своих библиотек/модулей PyPi и сторонних. Я обошел это и установил их исходный код, используя официальный загрузчик с PyPi.com

Все прошло хорошо с модулем PyPDF2, но модуль docx просто не импортируется в мой скрипт. Папка сохранена в том же месте, что и основной скрипт и библиотека PyPDF2. Вот код, который я использовал, чтобы убедиться, что правильный путь добавлен в основной скрипт:

import re, sys, os
os.chdir(r"\\WWG00M.ROOTDOM.NET\AFS-HOME5\GDOVERI\ICM\Desktop\PDF_Compare")
sys.path.insert(0, os.path.abspath(r'\\WWG00M.ROOTDOM.NET\[...]\PyPDF2-3.0.1'))
sys.path.insert(0, os.path.abspath(r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2'))
sys.path.append(r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2')
import PyPDF2
import docx

Я добавил эти строки sys.path, потому что в противном случае скрипт не может импортировать модули, но я не могу импортировать модуль docx, даже после добавления sys.path.insert и sys.path.append.

Что я упускаю здесь?

Я думаю, что проблема в пути. Когда вы устанавливаете Docx вручную, файлы для импорта находятся внутри python_docx-1.1.2\src\docx. Так что, чтобы импортировать docx, путь должен быть python_docx-1.1.2\src. Это не происходит с PyPDF, потому что папка “PyPDF2” с файлами уже находится внутри “PyPDF2-3.0.1” (PyPDF2-3.0.1\PyPDF2)

Другими словами, попробуйте изменить путь r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2' на r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2\src'

Ответ или решение

Когда вы вручную устанавливаете библиотеку python-docx, важно понимать, как организованы файлы в её структуре. Первая проблема, с которой вы столкнулись, заключается в том, что вы добавили неправильный путь для импорта модуля docx. Давайте более подробно проанализируем вашу проблему и предложим решение.

Проблема импорта библиотеки python-docx

Ваша текущая структура каталогов для python-docx, которую вы установили вручную, выглядит следующим образом:

python_docx-1.1.2/
│
├── src/
│   └── docx/
│       └── ... (файлы библиотеки)
│
└── ... (другие файлы)

Чтобы обеспечить успешный импорт модуля docx, вам нужно добавить в sys.path именно путь к каталогу src, а не к корневому каталогу python_docx-1.1.2. Это необходимо, потому что исходные файлы библиотеки находятся именно в подкаталоге src/docx.

В вашем коде вы добавили путь к python_docx-1.1.2, однако это не позволит Python найти модуль docx.

Рекомендации по исправлению

Вот как вы можете изменить свой код, чтобы он правильно добавлял путь к модулю:

  1. Измените строку, добавляющую путь для python_docx:
sys.path.insert(0, os.path.abspath(r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2\src'))
  1. Далее, убедитесь, что вы импортируете модуль корректно:
import docx

Ваш финальный код должен выглядеть следующим образом:

import re, sys, os

os.chdir(r"\\WWG00M.ROOTDOM.NET\AFS-HOME5\GDOVERI\ICM\Desktop\PDF_Compare")
sys.path.insert(0, os.path.abspath(r'\\WWG00M.ROOTDOM.NET\[...]\PyPDF2-3.0.1'))
sys.path.insert(0, os.path.abspath(r'\\WWG00M.ROOTDOM.NET\[...]\python_docx-1.1.2\src'))

import PyPDF2
import docx

Дополнительные советы

  1. Проверка наличия файлов: Убедитесь, что файлы в каталоге docx действительно существуют. Возможно, вы пропустили шаг установки библиотеки, и некоторые файлы могут отсутствовать.

  2. Использование виртуального окружения: Если возможно, подумайте о создании виртуального окружения с помощью venv, которое позволяет устанавливать зависимости локально без необходимости изменять системные пути.

  3. Отладка: Если импорт по-прежнему не работает, попробуйте вывести sys.path перед импортом, чтобы убедиться, что пути добавлены корректно:

print(sys.path)

Итак, следуя этим рекомендациям, вы сможете успешно импортировать библиотеку python-docx в вашем скрипте.

Оцените материал
Добавить комментарий

Капча загружается...