Форум сайта python.su
Есть программа, которая использует свой интерпретатор питона.
Для моего скрипта требуется библиотека 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\?
Нельзя же прописать путь к каждому файлу!
Офлайн
Такой вариант.
В sys.path интерпретатора питона, который использует программа прописал пути к обычному питону с библиотеками: ‘c:\\Python33\\’, ‘c:\\Python33\\Lib\\’, ‘c:\\Python33\\Lib\\site-packages\\’
По идеи, интерпретатор должен искать библиотеки и модуля в папке site-packages, в которой лежит библиотека win32com. Но почему питон не ищет модуля в папках лежащих в site-packages?
Как заставить его искать в подпапках?
Офлайн
Почему бы не установить это всё в нужный питон естественным путем?
Офлайн
Потому что, есть такая программа К3-Мебель. В ней используется свой интерпретатор питона. Когда в этой программе запускаю питоновский скрипт, то его будет исполнять интерпретатор находящийся в этой программе.
Офлайн
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”
Наконец, проверьте как в таком окружении работают ваши наработки.
Офлайн
Хе-хе. При запуске оно выдало “файл недоступен” про python33.zip. Так что нужно его оставить, но удалить оттуда всё содержимое. Оригинал, конечно, приберечь.
Отредактировано Shaman (Авг. 1, 2015 14:35:15)
Офлайн
Не. Тут лучше python33.zip не трогать.
На счёт win32com вроде решилось, но пришлось прописать кучу путей
Но проблема возникла при импорте pypyodbc, т.к. там есть import ctype, который вызывает ошибку отсутствия dll
Офлайн
RucheyА то что? Попробуйте вариант выше.
Не. Тут лучше python33.zip не трогать.
Отредактировано Shaman (Авг. 1, 2015 14:40:57)
Офлайн
RucheyВот-вот. Лучше сделать один раз нормально, чем всё время мучиться.
Но проблема возникла при импорте pypyodbc, т.к. там есть import ctype, который вызывает ошибку отсутствия dll
Офлайн
Позапускал демо-модули из документации к целевому софту: в предложенной конфигурации всё работало.
Офлайн