2017-12-11 8 views
0

그래서 저는 꽤 오랫동안 파이썬으로 진지한 작업을 수행하고 있습니다. 그러나, 나는 때때로 그것과 함께 몇 가지 문제를 가지고있다.별도의 폴더에서 Python 스크립트를 가져 오는 올바른 방법

파이썬으로 작업 할 때 PyCharm CE을 사용하면 가장 편안하다고 느낍니다. 일반적인 시나리오는 방금 새 virtualenv을 만들고 PyCharm을 시작한 다음 내 virtualenv을 열어 놓는 것입니다. 그리고 거기에서부터 오토 파일럿과 비슷하게, PyCharm은 site-packages과 파이썬 런타임과 관련된 모든 더러운 작업을 처리합니다.

나는 언제나 내 virtualenv을 깨끗하고 체계적으로 유지하고 싶어서, 의미 상으로는 내 소스 코드를 하위 모듈/하위 폴더로 체계적으로 정리하고있다. 따라서 어떤 코드 나 클래스 또는 다른 폴더에서 가져온 항목을 가져오고 싶을 때마다 가져옵니다. 내가 some_script.py에서 구현 A()라는 기능을 사용하려면, foo.py 어딘가에 지금

├── bin 
├── include  
├── lib   
└── src 
    ├── foo.py 
├── important_scripts 
    ├── some_script.py 
    └── some_other_script.py 
└── pip-selfcheck.json 

:

내가 내 virtualenv에서 다음과 같은 구조를 가지고 상상해보십시오. 분명한 방법은 foo.py에 간단한 줄을 추가하는 것입니다. from some_script import A과 같습니다. PyCharm에서 내 코드 (이 경우에는 foo.py)를 실행하고 디버깅 할 때 완벽하게 작동합니다.

앞서 설명한 일반적인 시나리오와는 대조적으로 Terminal.app에서 동일한 작업을 수행하려고했습니다. 그래서 나는 터미널 cd을 내 virtualenv에 발사하고 활성화시킵니다. 그런 다음, 내 에있는 bin 폴더 아래에있는 Python 실행 파일을 사용하여 foo.py을 실행하려고합니다 (적어도이 코드는 마우스 오른쪽 버튼으로 클릭하고 PyCharm 창에서 foo.py을 실행하는 것과 같습니다). 죄송하지만 ModuleNotFoundError: No module named 'some_script' 오류가 발생합니다.

단순한 세부 사항이 빠져 있다고 생각합니다. 내가 말했듯이, 그것은 PyCharm에서 실행될 때 마술처럼 작동합니다.

어쨌든, 조언이나 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

[하위 디렉토리에서 파일 가져 오기] (https://stackoverflow.com/questions/1260792/import-a-file-from-a-subdirectory)를 참조하십시오. – Galen

답변

0

가능한 해결책에 대한 모든 응답과 참고를 보내 주셔서 감사합니다. 온라인에서 연구하면서 모듈과 패키지를 가져 오는 동안 사람들이 겪었던 문제와 거의 같은 다양한 문제가 발생했습니다. 그래서,이 내가 단지 그것을 해결 한 방법입니다

  • important_scripts 디렉토리에서, 나는 __init__.py라는 이름의 파일을 포함했다. 이것은 기본적으로 파이썬 인터프리터에게 이것이 실제로는 일반적인 서브 디렉토리가 아니라 파이썬 패키지라는 것을 알려주는 것입니다. 이 __init__.py에서
  • , 나는 foo.py, 즉,있는 나는 기능 A를 가져 오는 것, 스크립트에서

    from important_scripts.some_script import A 
    
  • 그런 다음 줄을 추가 한 나는 다음 줄을 포함했다 :

    import os 
    import sys 
    sys.path.append(os.path.dirname(os.path.dirname(__file__))) 
    

    기본적으로 virtualenv을에 추가합니다.

관련 문제