Loading

QDU-OJ python升级后不能正确编译的问题

排错情况


按图中取消注释,发现由于版本原因引起找不到文件,文件名称被写死了,代码参见入下:

https://github.com/QingdaoU/JudgeServer/blob/master/client/Python/languages.py

py3_lang_config = {
    "compile": {
        "src_name": "solution.py",
        "exe_name": "__pycache__/solution.cpython-36.pyc",
        "max_cpu_time": 3000,
        "max_real_time": 5000,
        "max_memory": 128 * 1024 * 1024,
        "compile_command": "/usr/bin/python3 -m py_compile {src_path}",
    },
    "run": {
        "command": "/usr/bin/python3 {exe_path}",
        "seccomp_rule": "general",
        "env": ["PYTHONIOENCODING=UTF-8"] + default_env
    }
}

错误截图


如何解决(修改编译选项)

docker exec -it oj-backend sh

python3 manage.py shell

from options.options import *
print(SysOptions.languages)

这是系统使用的语言和编译器信息和编译选项,是 judge/languages.py 的拷贝(参见judgerServer),如果只修改 py 文件,是不会生效的。需要运行
SysOptions.reset_languages()
更新数据库。

这样以后系统更新了,py 文件可能会被覆盖,但是数据库的值还是修改过的。所以还请自行备份修改过的配置。

个人操作:原本尝试修改SysOptions.languages其中的python3描述部分,发现并没有起作用,随后运行SysOptions.reset_languages(),再次查看其中内容,发现少了python2,python3的部分内容已有变化,这里我还不是不太清楚,估计是reset才有效,并且自动进行了搜索语言.

python3编译对比

  • 原先的了
{'name': 'Python3', 
'config': 
	{'run': 
		{'env': ['LANG=en_US.UTF-8', 'LANGUAGE=en_US:en', 'LC_ALL=en_US.UTF-8', 'PYTHONIOENCODING=utf-8'], 
		'command': '/usr/bin/python3 {exe_path}', 
		'seccomp_rule': 'general'}, 
		'compile': {'exe_name': '__pycache__/solution.cpython-36.pyc', 
					'src_name': 'solution.py',
					 'max_memory': 134217728, 
					 'max_cpu_time': 3000, 
					 'max_real_time': 10000, 
					 'compile_command': '/usr/bin/python3 -m py_compile {src_path}'}, 
					 'template': '//PREPEND BEGIN\n//PREPEND END\n\n//TEMPLATE BEGIN\n//TEMPLATE END\n\n//APPEND BEGIN\n//APPEND END'}, 
					 'description': 'Python 3.6', 
					 'content_type': 'text/x-python'}
  • 最新的
{'name': 'Python3', 
'config':
	 {'run': 
	 	{'env': ['LANG=en_US.UTF-8', 'LANGUAGE=en_US:en', 'LC_ALL=en_US.UTF-8'], 
	 	'command': '/usr/bin/python3 -BS {exe_path}', 
	 	'seccomp_rule': 'general'}, 
	 	'compile': {'exe_name': 'solution.py',
	 	 'src_name': 'solution.py', 
	 	 'max_memory': 134217728, 
	 	 'max_cpu_time': 3000, 
	 	 'max_real_time': 10000, 
	 	 'compile_command': '/usr/bin/python3 -m py_compile {src_path}'}, 
	 	 'template': '//PREPEND BEGIN\n//PREPEND END\n\n//TEMPLATE BEGIN\ndef add(a, b):\n  # code\n\n//TEMPLATE END\n\n//APPEND BEGIN\nprint(add(1, 2))\n//APPEND END'}, 
	 	 'description': 'Python 3.12', 'content_type': 'text/x-python'}
posted @ 2024-06-26 18:03  Devinwon  阅读(13)  评论(0)    收藏  举报