PythonでSFTPクライアントもどき作らないといけないのでそういうライブラリが無いか探してみたところ、paramikoとやらが使いやすくていいらしい。
Python3.4にも対応しているとのことで早速インストール。
> pip install paramiko
...省略...
Successfully installed paramiko ecdsa pycrypto
Cleaning up...
>
が、無事にインストールが完了したのでとりあえず使ってみようとしたら、import時にエラーが発生。
>>> import paramiko
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\venv\lib\site-packages\paramiko\__init__.py", line 30, in <module>
from paramiko.transport import SecurityOptions, Transport
File "C:\venv\lib\site-packages\paramiko\transport.py", line 49, in <module>
from paramiko.dsskey import DSSKey
File "C:\venv\lib\site-packages\paramiko\dsskey.py", line 26, in <module>
from Crypto.PublicKey import DSA
File "C:\venv\lib\site-packages\Crypto\PublicKey\DSA.py", line 89, in <module>
from Crypto import Random
File "C:\venv\lib\site-packages\Crypto\Random\__init__.py", line 28, in <module>
from Crypto.Random import OSRNG
File "C:\venv\lib\site-packages\Crypto\Random\OSRNG\__init__.py", line 34, in <module>
from Crypto.Random.OSRNG.nt import new
File "C:\venv\lib\site-packages\Crypto\Random\OSRNG\nt.py", line 28, in <module>
import winrandom
ImportError: No module named 'winrandom'
>>>
依存ライブラリちゃんと全部入ったはずなのにおかしいな?と思いつつ、winrandomをインストールしようとしたら、何やらエラーでインストールできない。
> pip install winrandom
...省略...
error: Cygwin gcc cannot be used with --compiler=mingw32
>
どうもCygwinのGCCでコンパイルしようとしてコケてる模様。
64bit Windowsだとダメっぽい。
どこかにコンパイル済みのpycryptoはないものかと探してみたら、ここに置いてあった。
が、Python3.3までしかバイナリが配布されておらず、手元の環境(Windows7 64bit + Python3.4)にインストールしても動かない。
どうにかならないものかと散々探した末、Python3.4対応のバイナリを発見。
easy_installからインストールしてみたところ、無事にimportしてconnectしてsftpでファイルのput/getができた。