У меня есть проект Django, работающий под Django 1.8.4, который я пытаюсь обновить до последней версии Django.Поскольку я все еще использовал Python 2.7 на сервере Debian 8, я сначала обновил свой сервер до Debian 9, а затем обновил виртуальную среду своего проекта Django до Python 3.5.3 (версия Python 3 по умолчанию для Debian 9).
После того, как я перестроил виртуальную среду для использования Python 3, я запустил команду 2to3 -w .
в корневой папке моего проекта.2to3
нашел и исправил 62 проблемы без каких-либо затруднений.У меня также есть 216 модульных тестов, и только два из них не прошли под Python 3.5.
Затем я зашел на мой сайт Django, и сайт, похоже, работает, за исключением того, что формы, содержащие раскрывающиеся элементы, показывают «SomeThingobject» вместо значений из таблицы SomeThing.Я выполнил несколько SQL-запросов непосредственно к базе данных и подтвердил, что моя таблица поиска SomeThing заполнена.
Теперь я хочу запустить команду набора запросов Django в оболочке Python, как показано ниже, чтобы понять, почему мои раскрывающиеся списки не отображаютсязначения моего столбца:
queryset=SomeThing.objects.all()
Однако, если я активирую свою виртуальную среду и пытаюсь выполнить команду ./manage.py shell
, я получаю следующую ошибку:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/base.py", line 393, in run_from_argv
self.execute(*args, **cmd_options)
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/base.py", line 444, in execute
output = self.handle(*args, **options)
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/commands/shell.py", line 69, in handle
self.run_shell(shell=options['interface'])
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/commands/shell.py", line 58, in run_shell
return getattr(self, shell)()
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/commands/shell.py", line 41, in ipython
ip()
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/django/core/management/commands/shell.py", line 34, in _ipython
from IPython import start_ipython
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/IPython/__init__.py", line 48, in <module>
from .terminal.embed import embed
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/IPython/terminal/embed.py", line 19, in <module>
from IPython.terminal.ipapp import load_default_config
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/IPython/terminal/ipapp.py", line 30, in <module>
from IPython.core.magics import ScriptMagics
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/IPython/core/magics/__init__.py", line 22, in <module>
from .execution import ExecutionMagics
File "/srv/https/my_project.com/venvs/0bc664fa2a7b562d0b7e42a7acb3f095fe5df3cf/lib/python3.5/site-packages/IPython/core/magics/execution.py", line 21, in <module>
import cProfile as profile
File "/usr/lib/python3.5/cProfile.py", line 22, in <module>
run.__doc__ = _pyprofile.run.__doc__
AttributeError: module 'profile' has no attribute 'run'
Теперь у меня естьприложение под названием «профиль» в моем INSTALLED_APPS.Если я пытаюсь открыть оболочку Python на моем производственном сервере, который все еще использует Python 2.7, оболочка запускается без проблем.Эта проблема только с Python 3.5.Что интересно, мой проект Django 1.8 / Python 2.7 содержит файлы .pyc
, но теперь в Python 3 они заменены файлами __pycache__/<filename>.cpython-35.pyc
.
Я прочитал документ Django Портирование на Python 3 , но, похоже, это не относится к этой проблеме.Что мне нужно сделать, чтобы этот проект Django работал правильно под Python 3.5?Возможно, в Python 3.5 есть что-то новое, что конфликтует с моим profile
приложением, или это что-то еще?