Windows용 Miniconda에서 f2py

Mac에서 바람 피우고 Windows에서 놀고 있습니다. Windows 10 Pro/Education은 Ubuntu on Windows, Docker for Windows, Hyper-V를 사용할 수 있기 때문에 어떻게 되는 것입니다만, 관리자 권한이 없는 실습실의 Windows를 사용하거나 사용해 가르쳐야 한다 일도 있을까 생각합니다.

Python의 공식 설치 프로그램도 관리자 권한없이 설치할 수 있지만 numpy 등을 시도하면 Conda가 편리합니다. 나는 Miniconda Python-3.6 64-bit을 사용하여 conda install jupyter했지만 Anaconda를 넣으면 재미있을 것입니다. numpy에는 f2py가 포함되어 있습니다만, 그대로는 사용할 수 있게 되어 있지 않았습니다.

이하 DOS 명령은 서투르므로 별칭이 준비되어 있는 PowerShell이나, 나중에 인스톨 한 git for windows의 bash를 사용하고 있습니다.

gfortran 설치



mingw-w64를 넣으려고도 생각했습니다만, Conda씨에게 준비되어 있었으므로 그쪽을 넣기로 했습니다.
conda install m2w64-gcc-fortran

설치한 것만으로는 경로가 없으므로,
C:\Users\ユーザ名\Miniconda3\Library\mingw-w64\bin

(아나콘다의 경우 Miniconda3가 아닌 Anaconda3 , 이하 Conda까지의 경로는 생략)를 경로에 추가합니다. Cortana에게 "환경 변수"라고 물으면 환경 변수를 설정하는 제어판을 열 수 있습니다. 상단 사용자 환경 변수의 Path는 편집할 수 있어야 합니다.

f2py 없음



Conda의 f2py는 Scripts\f2py.py에 있습니다. 실행할 수 있도록 배치 파일 Scripts\f2py.bat`를 만듭니다.

f2py.bat
python %~dp0/f2py.py %*

PowerShell을 사용하는 경우 $profile에 함수를 작성할 수 있습니다.
function f2py(){python \Users\ユーザ名\Miniconda3\Scripts\f2py.py $args}

소스 수정



f2py를 실행할 수 있습니다. 소스를 제공하면 ValueError: Unknown MS Compiler version 1900라는 오류가 발생합니다. 약간 소스 수정이 필요합니다.
Lib\distutils\cygwinccompiler.py 는 157 행과 318 행을 주석 처리하여 pass 에서 아무 작업도 수행하지 않습니다. pass# 를 붙입니다.

cygwinccompiler.py
pass#self.dll_libraries = get_msvcr()
Lib\site-packages\numpy\distutils\mingw32ccompiler.py 는 96~104행째를 # 를 붙여 코멘트 아웃 합니다.

mingw32ccompiler.py
# Check for custom msvc runtime library on Windows. Build if it doesn't exist.
 #msvcr_success = build_msvcr_library()
 #msvcr_dbg_success = build_msvcr_library(debug=True)
 #if msvcr_success or msvcr_dbg_success:
     # add preprocessor statement for using customized msvcr lib
 #    self.define_macro('NPY_MINGW_USE_CUSTOM_MSVCR')

 # Define the MSVC version as hint for MinGW
 #msvcr_version = '0x%03i0' % int(msvc_runtime_library().lstrip('msvcr'))
 #self.define_macro('__MSVCRT_VERSION__', msvcr_version)

hello



조속히 시도해 봅시다.

foo.f90
subroutine hello()
    print *, "Hello"
end subroutine hello
f2py -c --fcompiler=gnu95 --compiler=mingw32 -m foo .\foo.f90
PS C:\Users\ユーザ名\Development\foo> python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo
>>> foo.hello()
 Hello from Fortran90!!!
>>>

당초 UnicodeDecodeError가 나와 고민하고 있었습니다만, 쉘을 영어로 바꾸었더니 잘 되었습니다. 일본어로 되돌려도 에러를 재현할 수 없기 때문에 수수께끼입니다.
chcp 437

Lowtran



lowtran 에서 시도해 봅니다. git은 conda에도 들어 있습니다만, GUI나 bash도 온다 git for Windows 를 넣어 보았습니다.

pandas가 들어 있지 않았기 때문에 conda에 넣었습니다.
git clone https://github.com/scivision/lowtran
cd lowtran
setup.py develop
conda install pandas
python DemoLowtran.py -a 0 12.5 25



색이 다른 것은 애경.

참고로 한 사이트


  • htps : // / s py. 기주 b. 이오/오드 우우키/파게 s/F2PY_우동 ws. HTML
  • htps //w w. s ゔ ぃ 시온. 코 / f2 py-runin g-fu rt ran-kode-in - py-on-on-wundo ws /
  • ぢ ぢ오. jp/ぉg3/2012/02/13/짱게_㎁구아게_안 d_chcp/
  • 좋은 웹페이지 즐겨찾기