2939


tortoisehg が提供している svn_1.7.5_py27_x86.zip を site-packages 以下に展開し、 from svn
import core にて ImportError が発生します。

<https://bitbucket.org/tortoisehg/thg-winbuild/downloads/>

[code]

    c:\Python276>python
    Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    >>> from svn import core
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "c:\Python276\lib\site-packages\svn\core.py", line 26, in <module>
        from libsvn.core import *
      File "c:\Python276\lib\site-packages\libsvn\core.py", line 25, in <module>
        _core = swig_import_helper()
      File "c:\Python276\lib\site-packages\libsvn\core.py", line 21, in swig_import_helper
        _mod = imp.load_module('_core', fp, pathname, description)
    ImportError: DLL load failed: このオペレーティング システムでは %1 は実行されません。
    >>>
    >>>
    
[/code]

環境は、Windows 8.1 Update の 64-bit 環境です。

32-bit 版だと発生し、64-bitのPythonではこのエラーは発生しません。

【再現手順】

  1. Python 2.7.6 をインストールする (C:\Python276)
  2. ダウンロードする <https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x86.zip>
  3. C:\Python276\Lib\site-packages 以下に展開する
  4. python.exe を起動し from svn import core を実行する


CC BY-SA 3.0
2015-01-02T04:01:33.477
2931
2015-01-02T06:58:29.530
2015-01-02T04:52:01.093
3639
3613
question
windows python
from svn import core にて ImportError: DLL load failed: このオペレーティング システムでは %1 は実行されません。


エラー内容からは、なんらかの DLL の読み込みエラーとしかいえません。

今手元に Windows 環境がないので、試し様がないのですが・・・見当違いだったらご容赦を。`svn_1.7.5_py27_x86.zip` の中の
`site-packages\libsvn` ディレクトリにある DLL をみてみると、

  * SSLEAY32.DLL
  * MSVCP60.DLL

が依存関係上必要で、このディレクトリにはありません。

ですので、これらのファイルが `site-packages\libsvn` の下もしくは、 `PATH` の通っている場所ににあるようしてください。
`MSVCP60.DLL` は、普通 `C:\Windows\System32` あたりにあるでしょう。

`SSLEAY32.DLL` がなければ、[ここから、OpenSSL
をインストールすること](http://www.openssl.org/related/binaries.html)で、もしくは、
`SSLEAY32.DLL` 自体を入手して `%PYTHON_INSTALL_DIR%\Lib\site-packages\libsvn`
に放り込んでください。（インストール時に、Dlls をどこに置くか聞いてきたならば、 `system32` へ放り込む）

そしてコンソールを閉じて、もしくは再起動して（念のため）再度トライ。

既にどちらのファイルも確認できるなら、エラーの原因としてまた別の理由を探さなければなりません。


CC BY-SA 3.0
2015-01-02T05:07:36.247
2935
2015-01-02T05:16:51.660
2015-01-02T05:16:51.660
4978
4978
2931
answer


エラーはDLLに指定された序数がみつからないときに出るエラーです。 インストールされているsvnのバージョンが1.7.5と異なるのではないでしょうか。

今、ほぼまっさらなWin8.1 pro(x64)に、python
2.7.6(x86)と質問に書いてあったsvn_1.7.5_py27_x86.zip、あとsvn
1.7.5をインストールしましたが、importエラーはなくなりました。

[code]

    C:\Python276>python
    Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
    32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from svn import core
    >>>
    
[/code]

* * *
[code]

    C:\Python276>svn --version
    svn, バージョン 1.7.5 (r1336830)
       コンパイル日時: May 11 2012, 13:51:05
    
[/code]

python 2.7だったので、VC++2008のランタイムとVC++2008SP1のランタイムも入れてしまったのですが、
関係ないと思います（けど入れちゃったので報告はしておきます。）

ちなみにこのマシンにはtortoiseHgは入れてません。

* * *

# 追記

検証まではしていないのですが、こちらに各種バージョンのPython 2.7 bindingsがあります。 これを試してみる手もあるかもしれません。

<http://alagazam.net/>

alagazam.netですが、 [Apache Subversion Binary Packages
(subversion.apache.org)](http://subversion.apache.org/packages.html)の一番下の
Win32Svnでも紹介されているサイトで、ダウンロードもSourceForge経由なので怪しいサイトではないと思います。


CC BY-SA 3.0
2015-01-02T05:33:28.650
2936
2015-01-02T06:01:47.443
2015-01-02T06:01:47.443
728
728
2931
answer


DLLの読み込みで失敗してそうなので、配布物のDLLの依存関係を調べてみました。

結局、 `libsvn_ra-1.dll` が `SSLEAY32.dll` ~~,`LIBEAY32.dll`~~(小文字のファイル名で存在していました)
を、 `libdb48.dll` が、 `MSVCP60.dll` を必要としてそうです。(そもそも配布物にあるものと標準にあるものは除いて、です)

で、手元の環境で同じような現象になったので
[openssl-0.9.8k_WIN32.zip](https://code.google.com/p/openssl-for-
windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip) の bin 以下の二つの dll を
libsvn 以下のものに上書きしたら例外は出なくなりました。

**ただ、バージョンが古いので、公開されるような場所でちゃんと使うなら[公式](https://www.openssl.org/related/binaries.html)から安全なDLLを探すか、自分で作成する必要があるかもしれません。(この用途でどの脆弱性がどう影響してしまうかまでは見切っていません。)**

(以下、私が勘違いしてるかもしれないので、コマンドの結果を貼っておきます)

[code]

    C:\temp> dumpbin.exe /DEPENDENTS libsvn_ra-1.dll libdb48.dll
    Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    Dump of file libsvn_ra-1.dll
    
    File Type: DLL
    
      Image has the following dependencies:
    
        MSVCRT.dll
        KERNEL32.dll
        libsvn_repos-1.dll
        libsvn_subr-1.dll
        LIBEAY32.dll
        SSLEAY32.dll
        libapr-1.dll
        libaprutil-1.dll
        Secur32.dll
        intl3_svn.dll
        WS2_32.dll
        libsasl.dll
        libsvn_delta-1.dll
        libsvn_fs-1.dll
    
    Dump of file libdb48.dll
    
    File Type: DLL
    
      Image has the following dependencies:
    
        WS2_32.dll
        KERNEL32.dll
        ADVAPI32.dll
        MSVCRT.dll
        MSVCP60.dll
    
      Summary
    
           20000 .data
           19000 .rdata
            B000 .reloc
            4000 .rsrc
          15B000 .text
    
[/code]


CC BY-SA 3.0
2015-01-02T06:07:21.200
2939
2015-01-02T06:58:29.530
2015-01-02T06:58:29.530
2992
2992
2931
answer