Установка python с расширениями python win32 на сетевой диск - PullRequest
6 голосов
/ 23 февраля 2010

Мне нужно, чтобы большое количество компьютеров под управлением Windows XP работало с одной и той же версией python, с набором модулей, одним из которых является python-win32. Я думал об установке Python на сетевой диск, который монтируется на всех клиентских машинах, и просто настраивал путь на клиентах. Python нормально запускается из сети, но при импорте win32com я получаю всплывающее сообщение об ошибке:

Точка входа в процедуру? PyWinObject_AsHANDLE @@ YAHPAU_object @@ PAPAXH @ Z не может быть расположена в библиотеке динамических ссылок pywintypes24.dll

после закрытия диалогового окна сообщения я получаю в консоли:

ImportError: Ошибка загрузки DLL: указанная процедура не найдена.

Я искал в каталоге python файл pywintypes24.dll, и он находится в "Lib \ site-packages \ pywin32_system32".

Чего мне не хватает, и есть ли другой способ, с помощью которого я могу один раз установить дополнительный модуль Python + Python-Win32 + и запустить его на многих компьютерах? У меня нет доступа к инструментам управления системами Microsoft, поэтому я должен быть немного более технологичным.

Ответы [ 4 ]

7 голосов
/ 23 февраля 2010

На каждой машине вы должны в основном запускать следующую команду pywin32_postinstall.py -install один раз. Предполагая, что ваша установка python в сети N:\Python26, выполните следующую команду на каждом клиенте:

N:\Python26\python.exe N:\Python26\Scripts\pywin32_postinstall.py -install

Другая важная вещь - Good Luck!. Причина в том, что вам может потребоваться сделать это как admin. В моем случае такая настройка работала для всех компьютеров, кроме одного. Я до сих пор не понял, почему.

1 голос
/ 07 февраля 2011

Python (или, точнее, ОС) ищет библиотеки DLL с помощью os.environ ["PATH"], а не с помощью поиска sys.path.

Таким образом, вы можете запустить Python, используя вместо этого простой файл .cmd, который добавляет \ server \ share \ python26 к пути (учитывая, что установщик (или вы) скопировал библиотеки DLL из \ server \ share \ python26 \ lib \ site-packages \ pywin32-system32 to \ server \ share \ python26).

Или вы можете добавить следующий код в ваши скрипты, прежде чем они попытаются импортировать win32api и т. Д.:

    # Add Python installation directory to the path, 
    # because on Windows 7 the pywin32 installer fails to copy
    # the required DLLs to the %WINDIR%\System32 directory and
    # copies them to the Python installation directory instead.
    # Fortunately, in Python it is possible to modify the PATH
    # before loading the DLLs.
    os.environ["PATH"] = sys.prefix + ";" + os.environ.get("PATH")
    import win32gui
    import win32con
0 голосов
/ 23 февраля 2010

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

  • Монтирование общего сетевого ресурса (net use \\server\share)
  • Скопируйте установщики Python и пакетов из общей сетевой папки в локальную папку
  • Проверка версии установщика msi относительно установленной версии
  • Если отличается, удалите Python и все зависящие от версии пакеты
  • Переустановите все пакеты

Это было бы в значительной степени вашей собственной системой централизованного управления этим программным обеспечением.

0 голосов
/ 23 февраля 2010

"" "Я искал в каталоге python файл pywintypes24.dll, и он находится в" Lib \ site-packages \ pywin32_system32 "" "". Существование dll не ставится под сомнение. Это точка входа в эту DLL?

Вы пытались установить точно такую ​​же конфигурацию на не сетевой диск?

Вы пытались импортировать другие модули в пакете?

Вы проверили dll с помощью обходчика зависимостей или чего-то подобного?

Означает ли "24" в pywintypes24.dll Python 2.4? Какую версию Python вы используете?

...