"Python setup.py install" bağımlılık çözünürlüğü için "easy_install" yerine "pip" kullanabilir miyim?


137

python setup.py installrequires=[]kullanılarak listelenen paketleri otomatik olarak yükleyecekeasy_install . pipBunun yerine nasıl kullanabilirim ?

Yanıtlar:


133

Evet yapabilirsin. Bir paketi tarball veya klasörden, web veya bilgisayarınıza kurabilirsiniz. Örneğin:

Web'den tarball'dan yükle

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

Yerel tarball'dan yükle

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

Yerel klasörden yükle

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

requests-2.3.0Klasörü silebilirsiniz .

Yerel klasörden yükle (düzenlenebilir mod)

pip install -e .

Bu, paketi düzenlenebilir modda yükler . Kodda yaptığınız tüm değişiklikler hemen sistem genelinde uygulanır. Bu, paket geliştiricisiyseniz ve değişiklikleri test etmek istiyorsanız kullanışlıdır. Ayrıca, yüklemeyi bozmadan klasörü silemeyeceğiniz anlamına gelir.


10
Paketleri yüklemek için "python setup.py install" komutunu kullanmaya alışkınsanız, pip ile bağımlılıkları çözmek için "python setup.py install" dosyasının nasıl alınacağını sormak doğaldır, ancak bu yanlış bir sorudur. Çözüm paketi pip ile kurmak ve "setup.py install" komutunu kullanmayı bırakmaktır.
joeforker

8
Sorun @joeforker gibi bir şey yaparsanız easy_install kullanmak zorunda kalabilirsinizpython setup.py test
TomDotTom

1
@TomDotTom çalışırken pip kullanmaya nasıl zorlanacağına dair herhangi bir fikir setup.py testlütfen?
Jan Sila

@joeforker, pip setup.pyperde arkasında kullanır . İnsanların paketimi pip ile yükleyebilmelerini istiyorsam, bir setup.pydosya oluşturmam gerekiyor .
cowlinator

Bunun kanıtı istiyorsanız, deneyin pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. HataNo such file or directory: 'c:\python\src\Hello-World\setup.py
Cowlinator

110

pip installBelki python setup.py sdistilk önce bir dosya yapabilirsiniz . Siz de buna pip install -e .benzer python setup.py develop.


14
Bunu deneyen herkes için bir uyarı: Dosyanın kendisini pip install -edeğil, bir dizini argüman olarak alır setup.py. İlk başta pip install -e .bana biraz karışıklığa neden olan dönemi fark etmedim :)
Markus Amalthea Magnuson

3
teşekkürler, pip install -e .kurabilirim ama pip ile, düzenlenebilir moddan nasıl kaldırabilirim?
JuanPablo

2
Düzenlenebilir yüklemeler, normal bir 'pip kaldırma <paket adı>' ile kaldırılır
joeforker

4

Gerçekten kullanmaya python setup.py installhazırsanız, böyle bir şey deneyebilirsiniz:

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
Teşekkür ederim, ancak bu yöntemi kullanarak özyinelemeli geri arama ile karşı karşıyayım. 'python setup.py install' komutunu kullandığımda, pip install komutunu çağırmak için Install.run'u çağırır. Bu işlev Install'u çağırır. tekrar koş ...
Lümen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.