Pycharm 无法打开 manage.py 任务
Pycharm cant open manage.py task
在我的一个项目中,我无法打开管理任务控制台。它适用于其他项目,但不适用于此项目。它以前有效,但最近停止了。我尝试使用该项目的旧版本,但它仍然损坏。我收到此错误:
Failed to get real commands on module "Visdjango": python process died with code 1: Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\manage_tasks_provider.py", line 22, in <module>
parser.report_data(dumper)
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_parser\parser.py", line 40, in report_data
module_to_use.process_command(dumper, command, command.create_parser("", command_name))
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_parser\_optparse.py", line 23, in process_command
dumper.set_arguments(command.args)
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_xml.py", line 95, in set_arguments
self.__command_element.setAttribute("args", VersionAgnosticUtils().to_unicode(command_args_text))
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\utils.py", line 36, in to_unicode
return unicode(obj.decode("utf-8"))
AttributeError: 'list' object has no attribute 'decode'
这看起来像是 PyCharm 4.5 的新 manage.py 任务集成中的错误。请将此问题报告给 PyCharm's issue tracker。
我今天遇到了同样的问题。在调试 pycharm django command runner 之后我发现了一些问题。
所以我项目中的问题是:
- 列表,而不是元组或集合。在我的选择选项的 django 命令中,我有时使用元组,有时使用列表。并且 runner 通常仅适用于列表。如果您将使用任何其他结构进行选择,则会出现错误。你可以在 your_pycharm_dir/helpers/pycharm/django_manage_command_provider/_parse/_utils.py 字符串 26
assert isinstance(opt.choices, list), "Choices should be list"
中看到
- 命令参数必须是字符串。如果你有这样的命令
class Command(BaseCommand):
args= ['app_label', 'model_name', ]
你会得到一个错误。参数必须是字符串
如果你想要调试 pycharm django manage.py 任务运行器,你可以从 your_pycharm_dir/helpers/pycharm/manage_py_task_provider.py 开始。并在 try except 中将解析器包装在字符串 22
try:
dumper = _xml.XmlDumper()
parser.report_data(dumper)
print(dumper.xml)
except Exception:
pass
如果您使用的是虚拟环境,请确保您的项目解释器(设置 > 项目:... > 项目解释器)指向其中的 python 可执行文件(例如,my_virtual_env/bin/python3。 4).
如果您使用的是虚拟机,您还需要让您的项目解释器设置指向您虚拟机下的虚拟环境下的python版本。如果您正在使用 Vagrant,这很容易,因为当您尝试添加一个新的解释器时 PyCharm 让您 select Vagrant,然后浏览 VM 文件系统以指向您需要的文件。
在 YOUR_PYCHARM_INSTALLATION_DIR\helpers\pycharm\django_manage_commands_provider\_parser\_utils.py
中更新您的 _utils.py
并更改第 20 行的代码:
assert isinstance(opt.choices, list), "Choices should be list"
和
assert isinstance(opt.choices, (list, tuple)), "Choices should be list or tuple"
在我的一个项目中,我无法打开管理任务控制台。它适用于其他项目,但不适用于此项目。它以前有效,但最近停止了。我尝试使用该项目的旧版本,但它仍然损坏。我收到此错误:
Failed to get real commands on module "Visdjango": python process died with code 1: Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\manage_tasks_provider.py", line 22, in <module>
parser.report_data(dumper)
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_parser\parser.py", line 40, in report_data
module_to_use.process_command(dumper, command, command.create_parser("", command_name))
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_parser\_optparse.py", line 23, in process_command
dumper.set_arguments(command.args)
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\django_manage_commands_provider\_xml.py", line 95, in set_arguments
self.__command_element.setAttribute("args", VersionAgnosticUtils().to_unicode(command_args_text))
File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.1\helpers\pycharm\utils.py", line 36, in to_unicode
return unicode(obj.decode("utf-8"))
AttributeError: 'list' object has no attribute 'decode'
这看起来像是 PyCharm 4.5 的新 manage.py 任务集成中的错误。请将此问题报告给 PyCharm's issue tracker。
我今天遇到了同样的问题。在调试 pycharm django command runner 之后我发现了一些问题。 所以我项目中的问题是:
- 列表,而不是元组或集合。在我的选择选项的 django 命令中,我有时使用元组,有时使用列表。并且 runner 通常仅适用于列表。如果您将使用任何其他结构进行选择,则会出现错误。你可以在 your_pycharm_dir/helpers/pycharm/django_manage_command_provider/_parse/_utils.py 字符串 26
assert isinstance(opt.choices, list), "Choices should be list"
中看到
- 命令参数必须是字符串。如果你有这样的命令
class Command(BaseCommand): args= ['app_label', 'model_name', ]
你会得到一个错误。参数必须是字符串
如果你想要调试 pycharm django manage.py 任务运行器,你可以从 your_pycharm_dir/helpers/pycharm/manage_py_task_provider.py 开始。并在 try except 中将解析器包装在字符串 22
try:
dumper = _xml.XmlDumper()
parser.report_data(dumper)
print(dumper.xml)
except Exception:
pass
如果您使用的是虚拟环境,请确保您的项目解释器(设置 > 项目:... > 项目解释器)指向其中的 python 可执行文件(例如,my_virtual_env/bin/python3。 4).
如果您使用的是虚拟机,您还需要让您的项目解释器设置指向您虚拟机下的虚拟环境下的python版本。如果您正在使用 Vagrant,这很容易,因为当您尝试添加一个新的解释器时 PyCharm 让您 select Vagrant,然后浏览 VM 文件系统以指向您需要的文件。
在 YOUR_PYCHARM_INSTALLATION_DIR\helpers\pycharm\django_manage_commands_provider\_parser\_utils.py
并更改第 20 行的代码:
assert isinstance(opt.choices, list), "Choices should be list"
和
assert isinstance(opt.choices, (list, tuple)), "Choices should be list or tuple"