使用Python下安裝six 1.10.0
和PIP 2.6,一個老的Django 1.0.4應用程序無法導入python_2_unicode_compatible
即使它找到six
1.10.0就好:六:無法導入名稱python_2_unicode_compatible
>>> import six
>>> six.__version__
'1.10.0'
>>> from six import python_2_unicode_compatible
>>>
我「已經證實了在應用程序中的Python代碼,它確實有six
訪問:
['appdirs==1.4.3', 'argparse==1.4.0', 'astkit==0.5.4', 'beautifulsoup==3.2.1',
'coverage==4.3.4', 'django-cms==2.0.0a0', 'django==1.0.4', 'dnspython==1.12.0',
'flup==1.0.2', 'importlib==1.0.4', 'iniparse==0.3.1', 'instrumental==0.5.3',
'mako==1.0.6', 'markupsafe==1.0', 'minimock==1.2.8', 'mysql-python==1.2.5',
'nose==1.3.7', 'packaging==16.8', 'pillow==3.4.2', 'pip==9.0.1', 'pluggy==0.4.0',
'py==1.4.33', 'pyparsing==2.2.0', 'python-dateutil==2.6.0', 'pyzor==1.0.0',
'setuptools==35.0.1', 'six==1.10.0', 'sorl-thumbnail==12.3', 'tox==2.7.0',
'uwsgi==2.0.15','virtualenv==15.1.0', 'wheel==0.29.0']
我負責移動一個很老運行django 1.0.4的網站(你閱讀正確,1.0.4)和django_cms 2.0.0 Alpha到一個新的服務器。舊服務器咆哮着,所以我擁有的是早已安裝的主要網站文件和依賴關係的備份。
我在Docker化它來幫助文檔和未來的部署。
Ubuntu 14.04
Python 2.6 (same results with 2.7)
Django 1.0.4 (installed via local zip)
django_cms 2.0.0a0 (installed via local zip)
我試圖Apache mod_wsgi
,gunicorn
(安裝pip2.6)和目前使用uwsgi
(優選的,pip2.6安裝)加載的應用程序。
Nginx
在另一個Docker容器中運行,其中proxy_pass
,並將前端代理和TLS。
uwsgi
用自定義wsgi
啓動該網站。
加載/
索引頁時,我有很多導入錯誤。慢慢地,我正在解決它們中的每一個問題(主要涉及Django「MIDDLEWARE_CLASSES」,我還沒有找到它們的定義)。
我目前被困在下面的錯誤:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 230, in __call__
self.load_middleware()
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 41, in load_middleware
raise exceptions.ImproperlyConfigured, 'Error importing middleware %s: "%s"' % (mw_module, e)
django.core.exceptions.ImproperlyConfigured: Error importing middleware cms.middleware.user: "cannot import name python_2_unicode_compatible"
uwsgi與指定python2.6的就好了啓動:
web_1 | [uWSGI] getting INI configuration from uwsgi.ini
web_1 | *** Starting uWSGI 2.0.15 (64bit) on [Wed Apr 26 16:27:43 2017] ***
web_1 | Python version: 2.6.9 (default, Oct 22 2014, 19:53:49) [GCC 4.8.2]
web_1 | Python main interpreter initialized at 0xef1050
web_1 | python threads support enabled
此外,python2.7最初配置和有完全相同的錯誤。我以爲自己讀了2.7或其他地方的python_2_unicode_compatible被棄用的地方,所以我回到了網站運行的原始版本。
我需要安裝virtualenv嗎?我通常不會在Docker下做這件事,而只是在全球安裝所有東西。我看不出這會如何改變。
如果six
沒有找到,我不會得到一個錯誤,它不能導入六,而不是python_2_unicode_compatible
?
如何在地獄中看到它試圖從'django.utils.encoding'中獲取? :) anyhoot,不兼容?姆。我甚至不確定它是用django_cms開始的。我剛剛在舊文件中找到指向機器上本地安裝的符號鏈接。這是我在備份中發現的唯一版本。 – eduncan911
回溯顯示錯誤在'cms.middleware.user'中,所以我[搜索](https://github.com/divio/django-cms/search?utf8=%E2%9C%93&q=python_2_unicode_compatible&type=) 'python_2_unicode_compatible'的django-cms回購:) – Alasdair
我剛剛瀏覽過這些文件,它們或者不存在,或者與我在本地安裝的'django_cms'完全不同。它看起來像你的搜索是在3.4.x版本 - 這是比我上面列出的版本(2.0.0a0)新8年。 – eduncan911