У меня проблема с инициализацией ctypes
if int(_os.uname()[2].split('.')[0]) < 8:
ValueError: invalid literal for int() with base 10: '
Мое приложение написано на Python 2.7 и основано на Django, работает локально с использованием App Engine SDK и virtualenv. Он был в производстве в течение длительного времени и успешно работает локально на других машинах. Это означает, что это локальная проблема для моей машины. Я нахожусь на Ma c OSX 10.15.3 Catalina.
Проблемы возникают при загрузке любой страницы моего приложения после запуска локального сервера разработки движка приложения. Сервер App Engine успешно запускается (я могу получить доступ к веб-странице администратора механизма приложений), но возникает вышеупомянутое исключение (см. Стэк вызовов ниже), так как кажется, что os.uname()
возвращает недопустимое значение.
Когда работает os.uname()
сам, результат кажется le git. И при активации virtualenv, или с использованием интерпретатора os / pyenv python.
Python 2.7.15 (default, Mar 15 2020, 22:00:51)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.uname()[2].split('.')[0]
'19'
Решения, которые я пробовал:
- Вызов
os.uname()
внутри и снаружи virtualenv, работает правильно. - Создание virtualenv с использованием системы Python 2.7.17 установка
- Создание virtualenvs с использованием pyenv с 3 различными python 2 версиями (2.7.17, 2.7 .16, 2.7.15)
Глядя на полный стек вызовов, кажется, что ctypes init вызывается из интерпретатора за пределами virtualenv. Это верно и в том случае, если при создании virtualenv я использую ОС python или pyenv python. Может быть, он не находит ctypes в virtualenv?
Traceback (most recent call last):
File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/google/appengine/api/lib_config.py", line 358, in __getattr__
self._update_configs()
File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/google/appengine/api/lib_config.py", line 294, in _update_configs
self._registry.initialize()
File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/google/appengine/api/lib_config.py", line 165, in initialize
import_func(self._modname)
File "/Users/myuser/.pyenv/versions/2.7.15/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/myuser/git/myproject/appengine_config.py", line 38, in <module>
cloud_sql_conn_retry.monkey_patch_mysql_backend()
File "/Users/myuser/git/myproject/server/utils/cloud_sql_conn_retry.py", line 14, in monkey_patch_mysql_backend
from django.db.backends.mysql.base import DatabaseWrapper
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 38, in <module>
from .creation import DatabaseCreation # isort:skip
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/backends/mysql/creation.py", line 4, in <module>
from django.db.backends.base.creation import BaseDatabaseCreation
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 5, in <module>
from django.core import serializers
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 23, in <module>
from django.core.serializers.base import SerializerDoesNotExist
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/core/serializers/base.py", line 4, in <module>
from django.db import models
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/models/__init__.py", line 3, in <module>
from django.db.models.aggregates import * # NOQA
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/models/aggregates.py", line 5, in <module>
from django.db.models.expressions import Func, Star
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/models/expressions.py", line 6, in <module>
from django.db.models import fields
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 14, in <module>
from django import forms
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/forms/__init__.py", line 7, in <module>
from django.forms.fields import * # NOQA
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/forms/fields.py", line 17, in <module>
from django.core import validators
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/core/validators.py", line 507, in <module>
allowed_extensions=get_available_image_extensions(),
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/django/core/validators.py", line 498, in get_available_image_extensions
from PIL import Image
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/PIL/Image.py", line 134, in <module>
from pathlib2 import Path
File "/Users/myuser/git/myproject/env/lib/python2.7/site-packages/pathlib2/__init__.py", line 5, in <module>
import ctypes
File "/Users/myuser/.pyenv/versions/2.7.15/lib/python2.7/ctypes/__init__.py", line 29, in <module>
if int(_os.uname()[2].split('.')[0]) < 8:
ValueError: invalid literal for int() with base 10: ''
Кроме того, при импорте ctypes в оболочку python все работает. Вот пути к библиотекам, которые импортируются в виртуальной среде. ctypes и os импортируются из интерпретатора pyenv, а django импортируется из virtualenv python. Мне не понятно почему, и я подозреваю, что это может быть связано с этой проблемой.
>>> import ctypes
>>> print(ctypes)
<module 'ctypes' from '/Users/myuser/.pyenv/versions/2.7.15/lib/python2.7/ctypes/__init__.pyc'>
>>> import os
>>> print (os)
<module 'os' from '/Users/myuser/.pyenv/versions/2.7.15/lib/python2.7/os.pyc'>
>>> import django
>>> print (django)
<module 'django' from '/Users/myuser/git/myapp/env/lib/python2.7/site-packages/django/__init__.pyc'>
Я не смог найти никакого результата в Google с той же проблемой. В чем может быть проблема?