Python setup.py разработать, чтобы переопределить установленную версию - PullRequest
15 голосов
/ 01 июня 2011

У меня есть пакет, который я разрабатываю. Этот пакет уже установлен как файл egg, припаркованный в каталоге site-packages, путь egg добавлен в easy-install.pth.

Теперь я понял, что в пакете есть ошибка, поэтому я вызвал python setup.py develop, чтобы подключить каталог разработки. Путь к исходному каталогу правильно добавлен в файл easy-install.pth, но он добавлен в последнюю очередь, это означает, что уже установленное яйцо будет выбрано и импортировано в первую очередь, когда я выдаю import mypackage.

Как можно, чтобы ловушка разработки переопределяла уже установленный пакет?

В конце концов, если я делаю это неправильно, пожалуйста, объясните, какова правильная стратегия для решения этого варианта использования.

Ответы [ 3 ]

5 голосов
/ 01 июня 2011

Если вы используете pip,

sudo pip uninstall packagename

запросит все пакеты, которые находятся в easy-install.pth, и удалит все из них после подтверждения.

Затем вы можетевыполните setup.py develop, чтобы только путь разработки находился в пути Python.

Если вам нужно несколько версий одной и той же библиотеки, лучше всего использовать virtualenv virtualenvwrapper в качестве помощника bash).

Также стоит упомянуть, что если вы хотите самое простое решение без сетевого трафика (я не могу себе представить, почему), вы также можете использовать только символическую ссылку с сайта.-packages, например:

sudo ln -fs ~/django_registration/registration /usr/lib/python2.6/dist-packages/django_registration

Если вы используете pip для установки пакетов (почему бы и вам?), вы также можете загрузить разрабатываемую версию в файл easy-install.pth, например:

pip install -e hg+http://bitbucket.org/ubernostrum/django-registration/#egg=django_registration

Обновление на основе комментария:

Если вы хотите использовать новый пакет только в текущем модуле, вы можете вручную изменить sys.path, например

sys.path.insert(1,'/path/to/package')

Итак, импорт начинается слегкое местоположение.

3 голосов
/ 01 июня 2011

Вы можете попросить pip переопределить текущие установленные пакеты с помощью --upgrade, а pip можно установить из локального каталога так:

easy_install pip # if you don't have pip installed
pip install /your/package --upgrade
1 голос
/ 29 марта 2012

Я бы использовал виртуальную среду, то есть изолированную установку Python, на которую не влияют дистрибутивы, установленные во всей системе. См. Virtualenv и virtualenvwrapper на PyPI.

...