Могу ли я использовать `pip` вместо` easy_install` для `зависимости python setup.py install`?

python setup.py install будет автоматически устанавливать пакеты, перечисленные в requires=[], с помощью easy_install. Как мне заставить вместо него использовать pip?

Ответ 1

Да, вы можете. Вы можете установить пакет из tarball или папки, в Интернете или на вашем компьютере. Например:

Установить из tarball в Интернете

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

Установить из локального tarball

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 .

Это устанавливает пакет в редактируемый режим. Любые изменения, внесенные в код, будут немедленно применяться к системе. Это полезно, если вы являетесь разработчиком пакета и хотите протестировать изменения. Это также означает, что вы не можете удалить папку, не нарушая установку.

Ответ 2

Вы можете pip install файл, возможно, с помощью python setup.py sdist. Вы также можете pip install -e ., который похож на python setup.py develop.

Ответ 3

Если вы действительно используете 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']
)