Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

다들 Atari 잘되시나요?? #19

Open
rubyjohn opened this issue Dec 30, 2020 · 0 comments
Open

다들 Atari 잘되시나요?? #19

rubyjohn opened this issue Dec 30, 2020 · 0 comments

Comments

@rubyjohn
Copy link

rubyjohn commented Dec 30, 2020

저만 이상한건지 모르겠는데
Atari가 제대로 안되는군요.
한군데가 아니고 여러군데, 윈8.1 윈10 등에서 다 그러는데...

딱히 질문은 아니고 제가 해결한 방법을 올립니다.
아마 vs 2015 이상 깔린데는 괜찮으리라 보긴 합니다만,
안깔린 곳에서 돌리실 분들 참고바랍니다.

  1. 사용한 베이스 환경 :
    Anaconda3-2019.10-Windows-x86_64.exe (그냥 쓰던거라 계속 씀)
    tf 1.15.0 + keras 2.2.4 (1판 내용 돌릴때 씀)
    tf 2.3.0 (2판 내용 돌릴때 씀)
    위 둘은 각각의 가상환경으로 돌림.

  2. 필요한 패키지
    pip install scikit-image
    pip install gym
    pip install gym[atari]
    (당연한거지만 다 설치한 다음, 다음 내역 진행해야함. 아니면 폴더도 없으니까요...)

    아래는 설치된 gym atari 버전입니다.
    gym 0.18.0
    atari-py 0.2.6

  3. 지금 설명할 부분은 tf 1.x 에서는 이상없는 부분인데,
    이상하게 tf 2.x에서는 안됨.
    FileNotFoundError: Could not find module 'C:\ProgramData\Anaconda3\envs\tensorflow2\lib\site-packages\atari_py\ale_interface\ale_c.dll' (or one of its dependencies). Try using the full path with constructor syntax.
    위와 같은 에러가 뜸.
    https://stackoverflow.com/questions/63080326/could-not-find-module-atari-py-ale-interface-ale-c-dll-or-one-of-its-dependenc
    위 링크를 참고하여 ale_c.dll 을 다운받거나, 혹은 1.15 환경에서 설치한 후 ale_c.dll 파일을 꺼내와서
    C:\ProgramData\Anaconda3\envs\ <가상환경이름> \Lib\site-packages\atari_py\ale_interface
    이 경로에 복사해 넣으세요.
    (물론 있으면 안넣어도 되지만 아마 없을겁니다.)
    (참고로 저기서 다운 받으나 1.15에서 정상적으로 설치된 것을 꺼내오나
    2020-12-30 기준 ale_c.dll 파일의 해시는 동일합니다)

  4. 이게 또 고약한 부분인데
    일단 vs2015 이상 깔렸다면 괜찮을 가능성이 있는데 vs깔린곳에서 안해봐서 확실히는 모르겠음.
    msvcp140d.dll 가 문제가 있다고 에러가 뜨는데, 이건 vs 같은게 깔려야만 생기는 파일입니다.
    (재배포패키지 vs2015-2019 등의 설치로는 해결 안될수 있음.)
    (~~d.dll은 대개 디버그용 dll이라 vs 안깔면 대개 안깔림)

    https://zweistar2.tistory.com/253
    위 링크에서 32bit-dll 을 받은후
    C:\Windows\System32
    에 풀어넣으면 됩니다.

    32bit-dll 파일 내용이 C:\Windows\System32 에 똑같이 있는지 확인후
    System32에 동일 파일이 있다면 원본은 백업하고 복사해 넣으시기 바랍니다.
    무조건 덮어씌웠다가는 다른 64비트 응용프로그램이 실행 안될 수 있습니다.
    왜냐하면 아타리를 위해서라면 덮어씌우면 되긴 되는데,
    아타리 하나 돌리려고 다른거 실행 못하는 대참사가 벌어질 수 있습니다.
    반드시 원본 백업 하세요. 자신없으면 가상머신에 테스트로 해보시거나요.

    여기까지만 보면 왜 고약한 문제인지 이해가 안갈수 있는데요,

    C:\Windows\System32 <- 64비트 dll 자리
    C:\Windows\SysWOW64 <- 32비트 dll 자리
    (오타 아닙니다. 이름만 봤을때는 정반대 같지만, 실제로 저게 본래 각 비트에 따른 dll 자리입니다.)

    즉, 64비트 dll 장소에 32비트 dll을 넣어야하기 때문에 문제가 될 수 있습니다.
    (처음에 실험한다고 여기저기 막 넣어보다 발견)
    위에 말했듯, 기존파일이 있을경우 덮어씌우다가 다른게 망가지는 참사가 발생할 수 있으니,
    32bit-dll 파일 내용이 C:\Windows\System32 에 똑같이 있는지 확인후
    System32에 동일 파일이 있다면 원본은 백업하고 복사해 넣으시기 바랍니다.

가상머신 등 여러군데서 신규설치하며 확인해본 결과
여기까지 하면 breakout_a3c 등 Atari 돌리는건 할 수 있습니다.
만약 위 사항을 따르지 않고도 그냥 잘되거든 위에 내용은 무시하시면 됩니다. 괜히 손댔다 더 꼬일 수 있음.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant