При установке django-pneon из репозитория Bitbucket с pip, я заметил кое-что странное (первая строка с выводом):
$ pip install hg+http://bitbucket.org/jespern/django-piston
Downloading/unpacking hg+http://bitbucket.org/jespern/django-piston
Cloning Mercurial repository http://bitbucket.org/jespern/django-piston to /tmp/pip-v1h8Sh-build
Running setup.py egg_info for package from hg+http://bitbucket.org/jespern/django-piston
Installing collected packages: django-piston
Running setup.py install for django-piston
Skipping installation of [venv]/lib/python2.6/site-packages/piston/__init__.py (namespace package)
Installing [venv]/lib/python2.6/site-packages/django_piston-0.2.3rc1-py2.6-nspkg.pth
Successfully installed django-piston
Cleaning up
Pip не установит поршень __init__.py
, указывая, что это потому, что «поршень» указан как один из namespace_packages
в setup.py
.
Далее, когда я заглянул внутрь «django_piston-0.2.3rc1-nspkg.pth»файл, я нахожу это, что похоже на попытку «виртуальных пакетов»:
# File: [virtualenv]/lib/python2.6/site-packages/django_piston-0.2.3rc1-py2.6-nspkg.pth
# Originally all on one line; broken apart here for readability.
import sys,new,os;
p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('piston',));
ie = os.path.exists(os.path.join(p,'__init__.py'));
m = not ie and sys.modules.setdefault('piston',new.module('piston'));
mp = (m or []) and m.__dict__.setdefault('__path__',[]);
(p not in mp) and mp.append(p)
Я вижу, что он здесь делает;это в основном создает "поддельный модуль", где поршень должен быть, который по существу объединяет все подмодули поршня.
Это, кажется, работает отлично для работы командной строки (я могу импортироватьпоршень из оболочки django [хотя его repr равно <module 'piston' (built-in)>
], и кажется, что все работает нормально с runserver.), но мой проект, работающий на apache mod_wsgi, выдает ошибку 500 на каждой странице, потому что "нет модуля с именем поршнем".handler ".
Я исключил проблемы с путями в Python;каталог site-packages находится в пути для всех попыток.Я не знаю каких-либо других причин, почему так бы себя вели, идеи?