2010-02-23 4 views
6

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

The procedure entry point [email protected]@[email protected]@[email protected] could not be located in the dynamic link library pywintypes24.dll

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

ImportError: DLL load failed: The specified procedure could not be found.

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

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

ответ

7

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

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

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

0

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

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

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

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

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

+0

Да, DLL содержит цитируемую точку входа, и она имеет тот же md5sum, как DLL, на моем локальная установка C: установка без проблем загружает модуль win32com. – florin

0

Вы можете использовать batch files running at boot для

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

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

1

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

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