Python 2.7 ошибка импорта импорта - PullRequest
5 голосов
/ 21 декабря 2011

Я использую djangoflup + fastgic + ngix.Работает хорошо.

Теперь я планировал обновить python 2.6.6 до 2.7.2 и столкнулся с проблемой импорта flup в python 2.7.

Python 2.7.2 (Red Hat 4.1.2-50)
>>> import sys
>>> sys.path
['', '......', 
'/usr/local/lib/python2.7.2/lib/python2.7/site-packages/flup-1.0.2-py2.7.egg', '......']
>>> import flup
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named flup

Он отлично работает на том же хосте под python 2.6.

Python 2.6.6 (Red Hat 4.1.2-50)
>>> import sys
>>> sys.path
['', '......', '/usr/local/lib/python2.6/site-packages/flup-1.0.1-py2.6.egg', '......']
>>> import flup
>>>

Есть идеи о причине?

Ответы [ 4 ]

10 голосов
/ 20 июня 2017

В новых версиях flup пропала поддержка python2.7 (случайно?)

Вы можете установить более старую версию, которая работает с:

pip install flup==1.0.3.dev-20110405
2 голосов
/ 04 февраля 2019

Проблема связана с изменением возможности импорта потоков. Последняя (на момент написания) версия flup: 1.0.3, и ее можно исправить следующим патчем:

diff -puNr flup-1.0.3/lib/python2.7/site-packages/flup/server/fcgi_base.py flup-1.0.3.fixed/lib/python2.7/site-packages/flup/server/fcgi_base.py
--- flup-1.0.3/lib/python2.7/site-packages/flup/server/fcgi_base.py 2019-02-03 23:13:24.305329000 +0000
+++ flup-1.0.3.fixed/lib/python2.7/site-packages/flup/server/fcgi_base.py   2019-02-03 23:12:12.319327934 +0000
@@ -38,11 +38,14 @@ import errno
 import traceback

 try:
-    import _thread
+    try:
+        import _thread
+    except ImportError:
+        import thread as _thread
     import threading
     thread_available = True
 except ImportError:
-    import _dummy_thread as thread
+    import _dummy_thread as _thread
     import dummy_threading as threading
     thread_available = False

Выше я сохранил исходное поведение (сначала импортируя _thread), а затем откатился на импорт потока как _thread. Я также исправил запасной вариант, так как тот, кто ввел изменение, забыл его исправить.

Учитывая, что RHEL / CentOS 7 все еще работает на Python 2.7, это исправление потребуется в течение некоторого времени. К сожалению, мне не удалось найти текущий дом для флюпа, чтобы иметь возможность отправить это исправление вверх по течению.

0 голосов
/ 22 декабря 2011

Я решил эту проблему, связав файл python-config с $PATH:

ln -s /usr/local/lib/python2.7.2/bin/python-config /usr/local/bin/python-config
0 голосов
/ 21 декабря 2011

Действительно ли /usr/local/lib/python2.7.2/lib/python2.7/site-packages/flup-1.0.2-py2.7.egg существует на вашем диске? на самом деле, если путь ни на что не указывает, модуль flup не может быть найден; в этом случае вам следует (пере) установить его.

...