Чи можу я використовувати `pip` замість` easy_install` для вирішення залежності `python setup.py install`?


137

python setup.py installавтоматично встановить пакети, перелічені в requires=[]користуванні easy_install. Як я можу використовувати його pipзамість цього?

Відповіді:


133

Так, ти можеш. Ви можете встановити пакет із тарболу чи папки, в Інтернеті чи на комп’ютері. Наприклад:

Встановити з тарболу в Інтернеті

pip install https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz

Встановити з місцевого тарболу

wget https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz
pip install requests-2.3.0.tar.gz

Встановити з локальної папки

tar -zxvf requests-2.3.0.tar.gz
cd requests-2.3.0
pip install .

Ви можете видалити requests-2.3.0папку.

Встановити з локальної папки (режим редагування)

pip install -e .

Це встановлює пакет у редагованому режимі . Будь-які зміни, внесені до коду, негайно застосовуються у всій системі. Це корисно, якщо ви розробник пакету та хочете перевірити зміни. Це також означає, що ви не можете видалити папку, не порушуючи встановлення.


10
Якщо ви звикли використовувати "python setup.py install" для встановлення пакетів, природно запитати, як отримати "python setup.py install" для вирішення залежностей з pip, але це неправильне питання. Рішення полягає в тому, щоб встановити пакет з pip та припинити використання "setup.py install".
joeforker

8
Проблема @joeforker у тому, що вас можуть змусити використовувати easy_install, якщо ви робите щось на кшталтpython setup.py test
TomDotTom

1
@TomDotTom будь-яка ідея про те, як змусити використовувати pip при запуску setup.py test, будь ласка?
Ян Сіла

@joeforker, pip використовує setup.pyза кадром. Якщо я хочу, щоб люди могли встановити мій пакунок з допомогою pip, мені потрібно створити setup.pyфайл.
ковбасник

Якщо ви хочете підтвердити це, спробуйте pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. ПомилкаNo such file or directory: 'c:\python\src\Hello-World\setup.py
ковпатор

110

Ви можете pip installподати файл, можливо, python setup.py sdistспочатку. Ви також можете, pip install -e .що схоже python setup.py develop.


14
Тільки голова для тих, хто намагається це: Зауважте, що pip install -eаргумент береться за каталог, а не сам setup.pyфайл. Спочатку я не помітив періоду, в pip install -e .який викликав у мене деяку плутанину :)
Маркус Амальтея Магнусон

3
дякую, якщо pip install -e .я можу встановити, але за допомогою pip, як я можу видалити його з редагованого режиму?
JuanPablo


4

Якщо ви дійсно налаштовані на використання, python setup.py installви можете спробувати щось подібне:

from setuptools import setup, find_packages
from setuptools.command.install import install as InstallCommand


class Install(InstallCommand):
    """ Customized setuptools install command which uses pip. """

    def run(self, *args, **kwargs):
        import pip
        pip.main(['install', '.'])
        InstallCommand.run(self, *args, **kwargs)


setup(
    name='your_project',
    version='0.0.1a',
    cmdclass={
        'install': Install,
    },
    packages=find_packages(),
    install_requires=['simplejson']
)

1
Дякую, але я стикаюся з рекурсивними зворотними дзвінками за допомогою цього методу. коли я використовую 'python setup.py install', він зателефонує Install.run для виклику установки pip. Ця функція викликатиме Установити. запустити знову ...
Люмен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.