使用python:3.9镜像构建Docker容器时遭遇SyntaxError报错
使用python:3.9镜像(--platform=linux/amd64)构建Docker容器时的SyntaxError问题及解决
问题场景
使用--platform=linux/amd64参数基于python:3.9镜像构建Docker容器时,启动应用触发以下语法错误:
Traceback (most recent call last): File "/var/www/myapp/manage.py", line 22, in <module> main() File "/var/www/myapp/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 345, in execute settings.INSTALLED_APPS File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__ self._setup(name) File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup self._wrapped = Settings(settings_module) File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/var/www/newapp/myapp/settings.py", line 2, in <module> import environ File "/usr/local/lib/python3.9/site-packages/environ.py", line 114 raise ValueError, "No frame marked with %s." % fname ^ SyntaxError: invalid syntax
尝试过的无效操作
修改Dockerfile中的依赖安装命令为:
python3 -m pip install requirements.txtpip3 install requirements.txt
两种调整均未解决问题,容器构建仍报错退出。
问题分析
初步排查可能的原因:
requirements.txt中指定的django-environ包未正确安装- 容器内未配置虚拟环境,导致应用无法检测到已安装的依赖包
解决方法
在Dockerfile中添加单独的RUN命令直接安装django-environ:
RUN pip install django-environ
添加该命令后,容器构建成功,应用可正常启动。
内容的提问来源于stack exchange,提问作者1nv
相关产品推荐
相关产品推荐

