Установка python с расширениями python win32 на сетевой диск

StackOverflow https://stackoverflow.com/questions/2319495

Вопрос

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

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

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

ИмпортЕррор:Ошибка загрузки DLL:Не удалось найти указанную процедуру.

Я искал каталог python для pywintypes24.dll и он присутствует в "Lib\site-packages\pywin32_system32" .

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

Это было полезно?

Решение

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

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

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

Другие советы

Python (или, точнее, ОС) выполняет поиск в библиотеках DLL, используя os.environ["PATH"], а не путем поиска в sys.path.

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

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

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

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

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

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

Вы могли бы использовать пакетные файлы, запускаемые при загрузке Для

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top