[컴][파이썬] Windows 64 bit에서 scrypt 설치하기

how to install scrypt python package on windows 64 bit environment/


Windows 7 64 bit 에서 scrypt package 64 bit 버전 설치


환경


  • windows 7 64bit 에 scrypt 설치
  • python version :  python 2.7.5 64bit


64 bit 에 scrypt 를 설치하려 보니 제공되는 .whl 이 없었다. 그래서 할 수 없이 source 로 부터 compile 을 했다. 과정을 간략하게 설명하려 한다.

절차

  1. Visual Studio Community Update 5 설치 : Download the latest Visual Studio Community 2013 with Update 5
  2. scrypt source download : mhallin / py-scrypt / Downloads — Bitbucket
  3. OpenSSL-Win64 설치 : 
  4. scrypt 의 setup.py 수정
  5. c:\Python27\Lib\distutils\msvc9compiler.py 수정
  6. python setup.py install

scrypt 의 setup.py 수정

win32 부분의 OpenSSL 관련 path 를 자신의 경로와 맞게 수정 해준다. 필자의 경우

  • d:\OpenSSL-Win64

에 설치하였기에 아래처럼 수정하였다.

#!/usr/bin/env python
from setuptools import setup, Extension

import sys
import platform

includes = []
library_dirs = []
extra_sources = []
CFLAGS = []


if sys.platform.startswith('linux'):
    ...
elif sys.platform.startswith('win32'):
    define_macros = [('inline', '__inline')]
    library_dirs = ['d:\OpenSSL-Win64\lib']
    libraries = ['libeay32', 'advapi32']
    includes = ['d:\OpenSSL-Win64\include', 'scrypt-windows-stubs/include']
    extra_sources = ['scrypt-windows-stubs/gettimeofday.c']
elif sys.platform.startswith('darwin') and platform.mac_ver()[0] < '10.6':
    ...
else:
    ...


msvc9compiler.py 수정

기본적으로 msvc9compiler.py 를 이용해서 Visual Studio Compiler 의 경로를 알아내는데, 이녀석이 VC 2008 까지는 잘 맞을 수 있는데, VC 2013 에서는 맞지 않는다. 그래서 아래같은 error 가 발생한다.
...
File "C:\Python26\lib\distutils\msvc9compiler.py", line 274, in query_vcvarsall
    raise ValueError(str(list(result.keys())))
ValueError: [u'path']

그래서 경로를 수정해 줬다. msvc9compiler.py  의 find_vcvarsall 부분을 아래처럼 수정해 줬다.

def find_vcvarsall(version):
    ...

    if not productdir:
        log.debug("No productdir found")
        return None

    vcvarsall = os.path.join(productdir, "vcvarsall.bat")   
    # 수정
    vcvarsall = 'd:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat'
    if os.path.isfile(vcvarsall):
        return vcvarsall
    log.debug("Unable to find vcvarsall.bat")
    return None



설치 완료

...
Installed d:\envs\ethereum\lib\site-packages\scrypt-0.7.1-py2.7-win-amd64.egg
Processing dependencies for scrypt==0.7.1
Finished processing dependencies for scrypt==0.7.1





댓글 없음:

댓글 쓰기