ฉันสามารถใช้ `pip` แทนที่จะเป็น 'easy_install' สำหรับ 'python setup.py install` resolution การพึ่งพาได้หรือไม่?


137

python setup.py installโดยอัตโนมัติจะติดตั้งแพคเกจที่ระบุไว้ในการใช้requires=[] easy_installฉันจะให้มันใช้งานpipแทนได้อย่างไร?

คำตอบ:


133

ใช่คุณสามารถ. คุณสามารถติดตั้งแพคเกจจาก 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 .

แพคเกจนี้จะติดตั้งในโหมดที่สามารถแก้ไขได้ การเปลี่ยนแปลงใด ๆ ที่คุณทำกับรหัสจะมีผลกับระบบทันที สิ่งนี้มีประโยชน์หากคุณเป็นผู้พัฒนาแพ็คเกจและต้องการทดสอบการเปลี่ยนแปลง นอกจากนี้ยังหมายความว่าคุณไม่สามารถลบโฟลเดอร์โดยไม่ทำให้การติดตั้งเสียหาย


10
หากคุณคุ้นเคยกับการใช้ "python setup.py ติดตั้ง" เพื่อติดตั้งแพคเกจเป็นเรื่องธรรมดาที่จะถามวิธีรับ "ติดตั้ง python setup.py" เพื่อแก้ไขการพึ่งพาของ pip แต่เป็นคำถามที่ผิด วิธีแก้ไขคือติดตั้งแพ็กเกจด้วย pip และหยุดใช้ "setup.py install"
joeforker

8
ปัญหา @joeforker คือคุณอาจถูกบังคับให้ใช้ easy_install หากคุณทำสิ่งที่ต้องการpython setup.py test
TomDotTom

1
@TomDotTom ความคิดใด ๆ เกี่ยวกับวิธีการบังคับใช้ pip เมื่อทำงานsetup.py testได้โปรด
Jan Sila

@joeforker, pip ใช้setup.pyเบื้องหลัง ถ้าฉันต้องการให้ผู้คนสามารถติดตั้งแพ็คเกจด้วย pip ได้ฉันต้องสร้างsetup.pyไฟล์
cowlinator

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
cowlinator

110

คุณสามารถpip installสร้างไฟล์ได้ทีpython setup.py sdistแรก นอกจากนี้คุณยังสามารถซึ่งเป็นเหมือนpip install -e .python setup.py develop


14
เพียงหัวขึ้นสำหรับทุกคนลองนี้: โปรดทราบว่าpip install -eใช้ไดเรกทอรีเป็นอาร์กิวเมนต์ไม่ใช่setup.pyไฟล์ตัวเอง ตอนแรกผมไม่ได้สังเกตรอบระยะเวลาบัญชีpip install -e .ซึ่งก่อให้เกิดความสับสนบางอย่างผม :)
มาร์คัส Amalthea Magnuson

3
ขอบคุณด้วยpip install -e .ฉันสามารถติดตั้ง แต่ด้วย pip ฉันจะถอนการติดตั้งจากโหมดที่แก้ไขได้อย่างไร
JuanPablo

2
การติดตั้งที่แก้ไขได้จะถูกถอนการติดตั้งด้วย 'การถอนการติดตั้ง pip <ชื่อแพ็คเกจ>' เป็นประจำ
joeforker

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.run เพื่อโทรไปติดตั้ง pip ฟังก์ชั่นนี้จะเรียกว่าติดตั้ง ทำงานอีกครั้ง ...
Lumen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.