6

さまざまなモジュール(そのうちの1つはpython-win32)を使用して、同じバージョンのpythonを実行している多数のWindowsXPマシンを維持する必要があります。すべてのクライアントマシンにマウントされているネットワークドライブにPythonをインストールし、クライアントのパスを調整することを考えました。Pythonはネットワークから正常に起動しますが、win32comをインポートすると、次のようなポップアップエラーが表示されます。

プロシージャのエントリポイント?PyWinObject_AsHANDLE @@ YAHPAU_object @@ PAPAXH@Zがダイナミックリンクライブラリpywintypes24.dllに見つかりませんでした

メッセージダイアログを閉じた後、コンソールに表示されます。

ImportError:DLLのロードに失敗しました:指定されたプロシージャが見つかりませんでした。

Pythonディレクトリでpywintypes24.dllを検索しましたが、これは「Lib \ site-packages\pywin32_system32」にあります。

何が欠けていますか?Python + Python-Win32 +追加モジュールを一度インストールして、それらを多くのマシンで実行できる別の方法はありますか?私はマイクロソフトのシステム管理ツールにアクセスできないので、それよりも少しローテクである必要があります。

4

3 に答える 3

9

すべてのマシンで、基本的に次の手順をpywin32_postinstall.py -install1回実行する必要があります。ネットワークへのPythonのインストールがであると仮定して、N:\Python26すべてのクライアントで次のコマンドを実行します。

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

もう1つの重要なことはGood Luck!です。その理由は、これをとして行う必要があるかもしれないからですadmin。私の場合、このような設定は1台を除くすべてのコンピューターで機能しました。私はまだ理由がわかりませんでした。

于 2010-02-23T16:35:17.980 に答える
1

Python (または正確には OS) は、sys.path を検索するのではなく、os.environ["PATH"] を使用して DLL を検索します。

したがって、パスに \server\share\python26 を追加する代わりに、単純な .cmd ファイルを使用して Python を起動できます (インストーラー (またはユーザー) が \server\share\python26\lib\site-packages\pywin32- から DLL をコピーした場合)。 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
于 2011-02-07T09:09:14.053 に答える
0

起動時に実行されるバッチ ファイルを使用して、

  • ネットワーク共有をマウントします ( net use \\server\share)
  • Python とパッケージのインストーラーをネットワーク共有からローカル フォルダーにコピーします。
  • インストールされているバージョンに対して msi インストーラーのバージョンを確認します
  • 異なる場合は、Python とすべてのバージョン依存パッケージをアンインストールします
  • すべてのパッケージを再インストールする

これは、そのソフトウェアの独自の中央管理システムの役割とほぼ同じです。

于 2010-02-23T16:10:52.823 に答える