Tôi có thể sử dụng `pip` thay vì` easy_install` cho độ phân giải phụ thuộc` python setup.py install` không?


137

python setup.py installsẽ tự động cài đặt các gói được liệt kê trong requires=[]sử dụng easy_install. Làm thế nào để tôi có được nó để sử dụng pipthay thế?

Câu trả lời:


133

Có bạn có thể. Bạn có thể cài đặt một gói từ tarball hoặc thư mục, trên web hoặc máy tính của bạn. Ví dụ:

Cài đặt từ tarball trên web

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

Cài đặt từ tarball địa phương

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

Cài đặt từ thư mục cục bộ

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

Bạn có thể xóa requests-2.3.0thư mục.

Cài đặt từ thư mục cục bộ (chế độ có thể chỉnh sửa)

pip install -e .

Điều này cài đặt gói trong chế độ có thể chỉnh sửa . Mọi thay đổi bạn thực hiện đối với mã sẽ ngay lập tức được áp dụng trên toàn hệ thống. Điều này hữu ích nếu bạn là nhà phát triển gói và muốn kiểm tra các thay đổi. Điều đó cũng có nghĩa là bạn không thể xóa thư mục mà không phá vỡ cài đặt.


10
Nếu bạn đã quen với việc sử dụng "python setup.py install" để cài đặt các gói, thì việc hỏi làm thế nào để có được "python setup.py install" để giải quyết các phụ thuộc với pip, nhưng đó là câu hỏi sai. Giải pháp là cài đặt gói với pip và ngừng sử dụng "setup.py install".
joeforker

8
Vấn đề @joeforker là bạn có thể bị buộc phải sử dụng easy_install nếu bạn làm điều gì đó nhưpython setup.py test
TomDotTom 22/03/2017

1
@TomDotTom có ​​ý kiến ​​gì về cách bắt buộc sử dụng pip khi chạy setup.py testkhông?
Jan Sila

@joeforker, pip sử dụng setup.pyđằng sau hậu trường. Nếu tôi muốn mọi người có thể cài đặt gói của tôi với pip, tôi cần tạo một setup.pytệp.
chăn bò

Nếu bạn muốn bằng chứng về điều này, hãy thử pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. Lỗi làNo such file or directory: 'c:\python\src\Hello-World\setup.py
cowlinator

110

Bạn có thể pip installmột tập tin có thể python setup.py sdistđầu tiên. Bạn cũng có thể pip install -e .là như thế python setup.py develop.


14
Chỉ cần một người đứng đầu cho bất cứ ai đang thử điều này: Lưu ý rằng pip install -elấy một thư mục làm đối số, không phải setup.pychính tệp. Lúc đầu, tôi không nhận thấy khoảng thời gian pip install -e .gây cho tôi một số nhầm lẫn :)
Markus Amalthea Magnuson

3
cảm ơn, với pip install -e .tôi có thể cài đặt nhưng với pip, làm cách nào tôi có thể gỡ cài đặt từ chế độ có thể chỉnh sửa?
JuanPablo

2
Các bản cài đặt có thể chỉnh sửa được gỡ cài đặt bằng 'gỡ cài đặt pip <tên gói>' thông thường
joeforker

4

Nếu bạn thực sự bắt đầu sử dụng, python setup.py installbạn có thể thử một cái gì đó như thế này:

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
Cảm ơn bạn, nhưng tôi phải đối mặt với cuộc gọi lại đệ quy bằng phương pháp này. Khi tôi đang sử dụng 'python setup.py install', nó sẽ gọi Install.run để gọi pip install., chức năng này sẽ gọi Install. chạy lại ...
Ziggy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.