Найти - Пользователи
Полная версия: Импорт модулей из подпапок
Начало » Python для новичков » Импорт модулей из подпапок
1 2
Ruchey
Есть программа, которая использует свой интерпретатор питона.
Для моего скрипта требуется библиотека win32com.client.
Я копирую папки этого модуля (win32, win32com, win32comext и файлы: PyWin32.chw, pywin32-219-py3.3.egg-info, pywin32.pth, pywin32.version.txt) в папку с программой (…\Lib\).
При запуске программы в sys.path прописываю путь к своей папке с библиотеками …\Lib\.
Из программы запускаю свой модуль, в котором прописано import win32com.client.
Вылетает ошибка на import …\Lib\win32com\__init__.py, что нет модуля win32api, потому что этот файл лежит в другой подпапке.

Я не понимаю, почему, в обычном питоне прописан путь в sys.path c:\Python33\Lib\site-packages\ где лежат все библиотеки, и там всё работает.
Почему в моём варианте питон не ищет модуля во всех подпапках относительно прописанного корневого каталога …\Lib\?
Нельзя же прописать путь к каждому файлу!
Ruchey
Такой вариант.
В sys.path интерпретатора питона, который использует программа прописал пути к обычному питону с библиотеками: ‘c:\\Python33\\’, ‘c:\\Python33\\Lib\\’, ‘c:\\Python33\\Lib\\site-packages\\’
По идеи, интерпретатор должен искать библиотеки и модуля в папке site-packages, в которой лежит библиотека win32com. Но почему питон не ищет модуля в папках лежащих в site-packages?
Как заставить его искать в подпапках?
Shaman
Почему бы не установить это всё в нужный питон естественным путем?
Ruchey
Потому что, есть такая программа К3-Мебель. В ней используется свой интерпретатор питона. Когда в этой программе запускаю питоновский скрипт, то его будет исполнять интерпретатор находящийся в этой программе.
Shaman
1. Cкачайте https://www.python.org/ftp/python/3.3.0/python-3.3.0.msi
2. Распакуйте эго при помощи msiexec /a python-3.3.0.msi /qb TARGETDIR=c:\temp\py330 ,где в качестве последнего параметра задайте любой подходящий абсолютный путь. Там разместится распакованное содержимое.
3. Из этого пакета скопируйте python.exe и папку DLLs в каталог bin вашей редакции К3-Мебели (у меня это “C:\Program Files (x86)\GeoS\K3-Мебель ПКМ Демо 7.3\Bin”)
4. Создайте в этой bin каталог lib и распакуйте в него содержимое “C:\Program Files (x86)\GeoS\K3-Мебель ПКМ Демо 7.3\Bin\python33.zip”, затем переименуйте, или переместите куда-нибудь этот архив.
5. Скачайте https://bootstrap.pypa.io/get-pip.py , положите его в bin “мебели” и от имени администратора выполните в этом каталоге “python.exe get-pip.py”
6. Скачайте pywin32‑219‑cp33‑none‑win32.whl с http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32 , положите его в тот же bin и от имени администратора выполните “python -m pip install pywin32-219-cp33-none-win32.whl”
Наконец, проверьте как в таком окружении работают ваши наработки.
Shaman
Хе-хе. При запуске оно выдало “файл недоступен” про python33.zip. Так что нужно его оставить, но удалить оттуда всё содержимое. Оригинал, конечно, приберечь.
Ruchey
Не. Тут лучше python33.zip не трогать.
На счёт win32com вроде решилось, но пришлось прописать кучу путей


Но проблема возникла при импорте pypyodbc, т.к. там есть import ctype, который вызывает ошибку отсутствия dll
Shaman
Ruchey
Не. Тут лучше python33.zip не трогать.
А то что? Попробуйте вариант выше.
Shaman
Ruchey
Но проблема возникла при импорте pypyodbc, т.к. там есть import ctype, который вызывает ошибку отсутствия dll
Вот-вот. Лучше сделать один раз нормально, чем всё время мучиться.
Shaman
Позапускал демо-модули из документации к целевому софту: в предложенной конфигурации всё работало.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB