Docker 컨테이너에서 실행되는 Django 앱을 작업하기 시작했습니다. Docker 컨테이너와 Django 앱 컨텍스트 내에서 코드를 실행하는 Emacs에서 interactive python을 사용할 수 있기를 원합니다. 필자는 기본적으로 이맥스가 Docker 컨테이너 내에서 실행하는 데 사용되는 파이썬 인터프리터를 원한다. 이것은 것을 의미한다Emacs의 Elpy in-buffer 파이썬 인터프리터를 도커 컨테이너에 연결하는 방법은 무엇입니까?
CMD ./manage.py shell
:
나는 그것이 끝나는 장고 명령을한다는 점에서 내 실제 Dockerfile 용기 만 다른 수정 Dockerfile을 만드는 대신 호출하여 대부분의 경우이를 관리해야 그 Docker 컨테이너를 실행할 때 실제로 컨테이너 내에서 실행되는 Django 인터프리터를 얻습니다. 나는 추가하여 파이썬 쉘을 시작할 때 Elpy이 호출이 :
(setq python-shell-interpreter "/path_to_my_script/run_shell.sh")
내 .emacs.d/init.el 파일에. 여기서 "/path_to_my_script/run_shell.sh"스크립트는 컨테이너를 실행하는 스크립트입니다.
이 부분은 실제로 부분에 적용됩니다. 나는
from django.utils import timezone
과 같은 코드의 라인을 강조 표시하고 이맥스 명령 elpy-shell-send-region-or-buffer을 실행할 수 오전이 코드를 실행합니다. 그런 다음 강조 표시 할 수 있습니다.
print(timezone.now())
현재 시간이 인쇄됩니다. 이 코드가 실제로 실행하여 내 컨테이너에서 실행되고 있는지 확인했습니다 :
import os
print(os.getcwd())
내 부두 노동자 컨테이너의 사용자의 홈 디렉토리를보고.
이 설정으로 아직 문제가되는 것은 동일한 elpy-shell-send-region-or-buffer 명령을 사용하여 여러 줄의 파이썬을 동시에 실행하려고 할 때입니다. 내가 한 줄 이상을 선택하고 내가 파이썬 쉘에서 다음과 같은 오류 얻을 그 명령을 실행하면 : 나는 다음과 같은 질문에 어떤 답을 찾을 수 없었습니다
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.5/codecs.py", line 895, in open
file = builtins.open(filename, mode, buffering)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/py10324GOe'
을 :
- 왜 코덱입니다 .py tmp 파일을 읽으려고?
- 파이썬이 만든 임시 파일은 무엇입니까? (일부 파이썬 코드 실행을하고 /tmp를 디렉토리에 보면 당신은 아마 py271761jE 같은 파일을 많이 볼 수 있습니다.)
- 왜/tmp 디렉토리 내 도커 컨테이너 비어? 파이썬이 그 디렉토리에있는 파일을 만들고 읽으 려하지만 실패하고있는 것 같습니다.
- 어떻게 디버깅 할 수 있습니까?
누구나이 질문에 답하면 거대한 도움이 될 것입니다. 이 문제에 대한 정보를 얻을 수 없었습니다./tmp 디렉토리의 py * 파일에 대한 인터넷 검색은 tempfile 패키지를 나타냅니다.
무슨 일이 벌어지는 지 모르겠지만, 현재의 이론은 파이썬 셸에 여러 줄이있는 영역이 전송 될 때 줄 바꿈 문자를 처리해야 코덱 파일을 사용하려고한다는 것입니다. 어떻게 든이 파일은 임시 파일에 의존하고 도커 컨테이너가이를 망쳐 놓고 있다고 생각합니다. 이 이론이 얼마나 가까운 지 모르지만 더 자세히 조사 할 방법을 모르겠습니다.