Có sự khác biệt đáng kể nào giữa
pip install -e /path/to/mypackage
và biến thể setuptools?
python /path/to/mypackage/setup.py develop
Có sự khác biệt đáng kể nào giữa
pip install -e /path/to/mypackage
và biến thể setuptools?
python /path/to/mypackage/setup.py develop
Câu trả lời:
Cố gắng tránh gọi setup.py
trực tiếp, nó sẽ không thông báo chính xác cho pip rằng bạn đã cài đặt gói của bạn.
Với pip install -e
:
Đối với các dự án cục bộ, thư mục của nhóm Among someProject.egg-thông tin được tạo ra liên quan đến đường dẫn dự án. Đây là một lợi thế so với việc chỉ sử dụng
setup.py develop
, nó tạo ra thông tin trực tiếp về trứng Egg-thông tin liên quan đến thư mục làm việc hiện tại.
Thêm: tài liệu
Cũng đọc tài liệu của setuptools .
Một điểm khác biệt nữa: pip install -e
sử dụng bánh xe trong khi
python setup.py develop
không sử dụng nó.
Với install
, bạn có thể đạt được hành vi tương tự bằng cách sử dụng
pip install -e /path/to/package --no-use-wheel
Thông tin thêm về bánh xe: bánh xe trăn
--no-use-wheel
ủng hộ--no-binary :all:
Một điểm khác biệt có thể ủng hộ pip install -e
là nếu dự án của bạn có phụ thuộc vào install_requires
trong setup.py
, sau đó pip install -e .
cài đặt phụ thuộc với pip, trong khi python setup.py develop
có thể cài đặt với easy_install
, và có thể gây ra vấn đề tái: 'trứng-info' như đã đề cập ở trên. Khi install-requires
sử dụng dependency_links
với URL git tùy chỉnh, với số nhận dạng trứng đính kèm, điều này có thể đặc biệt khó chịu.
pip install -e .
, về cơ bản nó tạo ra một liên kết tượng trưng trong thư mục gói trang web Python có liên quan để trỏ đến bản sao làm việc của bạn. Vì các thay đổi mã được thực hiện cho bản sao đang hoạt động đó, nó được phản ánh ngay lập tức trong phiên bản "đã cài đặt", do đó bạn không cần phải chạy lại các lệnh cài đặt khi bạn đi. Đây là chủ yếu hữu ích cho việc phát triển trong một kho lưu trữ mà đại diện cho một gói cài đặt, nhưng cũng có thể có ích cho ví dụ như viết một số bộ sưu tập các mô-đun với chỉ nhập khẩu tuyệt đối vv
Một điểm khác biệt nữa: khi bạn chạy python setup.py develop
phiên bản được coi là bản phát hành trước (có lẽ vì bạn đang chạy nó từ bản sao git khi chưa kiểm tra bản phát hành), sau đó bạn sẽ cho phép cài đặt bản phát hành trước phụ thuộc của mình . Mặt khác, với pip install --editable
bạn sẽ phải vượt qua --pre
một cách rõ ràng nếu bạn muốn những bản phát hành trước này.
(Xem nhật ký CI với các bản phát hành trước vô tình được sử dụng và so sánh với bản dựng cố định tại đây .)