我有這個確切的問題,這個問題似乎缺少來自我的碼頭容器和PyCharm自動生成的我的碼頭容器的克隆的環境變量。
下面是一個特設來解決這個問題,在Django,首開:
首選項>構建執行部署>控制檯> Django的控制檯
默認的Django控制檯啓動腳本:
import sys
print('Python %s on %s' % (sys.version, sys.platform))
print(sys.executable)
import django;
print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)
您將需要手動注入您的環境變量,否則解釋器將無法讀取POSTGRES_ENV_爲在這裏看到:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ["POSTGRES_ENV_DB_NAME"],
'USER': os.environ["POSTGRES_ENV_POSTGRES_USER"],
'PASSWORD': os.environ["POSTGRES_ENV_POSTGRES_PASSWORD"],
'HOST': os.environ["POSTGRES_PORT_5432_TCP_ADDR"],
'PORT': os.environ["POSTGRES_PORT_5432_TCP_PORT"],
}
}
所以只是簡單地運行:
docker exec -it CONTAINER_ID python -c 'import os; print(os.environ)'
和輸出複製到剪貼板。最後,更新你的Django控制檯啓動腳本:
import os
os.environ = {"POSTGRES_ENV_DB_NAME":foo, "POSTGRES_ENV_POSTGRES_USER":bar}
import sys
print('Python %s on %s' % (sys.version, sys.platform))
print(sys.executable)
import django;
print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)
確保PROJECT_ROOT & WORKING_DIR_AND_PYTHON_PATHS不需要手動設置兩種。
我沒有一個答案,但我看到完全相同的行爲 - 運行/調試工作碼頭,勉強打破了python控制檯。 – brentiumbrent