Cài đặt pip pip - có thể di chuyển ./


177

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

1
Đây dường như là một liên kết được cập nhật mô tả chế độ phát triển: setuptools.readthedocs.io/en/latest/
mẹo

nếu bạn quan tâm đến việc gỡ cài đặt (các gói trong chế độ phát triển / có thể chỉnh sửa) hãy thử câu hỏi này: stackoverflow.com/questions/17346619/ chủ đề
Charlie Parker

Câu trả lời:


130

Cố gắng tránh gọi setup.pytrự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 .


Người dùng có phải chạy lại 'python setup.py sdist' sau khi thực hiện thay đổi tệp để thay đổi có hiệu lực không?
biến

tuy nhiên nếu bạn cần gỡ lỗi (chính tệp tin cài đặt) với 'set_trace' thì 'python setup.py phát triển' có thể thực hiện được
mirek

URL thứ hai bị hỏng.
bad_coder

Cả hai đều làm việc cho tôi.
sobolevn

76

Một điểm khác biệt nữa: pip install -esử 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


18
Lưu ý rằng, theo pip.pypa.io/en/urdy/reference/pip_install , ĐỔI--no-use-wheel ủng hộ--no-binary :all:
Nzbuu

Chúng tôi có thể cài đặt pip -e cho gói được sản xuất bằng cách sử dụng sdist không?
biến

36

Một điểm khác biệt có thể ủng hộ pip install -elà nếu dự án của bạn có phụ thuộc vào install_requirestrong setup.py, sau đó pip install -e .cài đặt phụ thuộc với pip, trong khi python setup.py developcó 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-requiressử dụng dependency_linksvớ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.


1
điều này hoàn toàn giải thích tại sao gói riêng của tôi không được cài đặt. Nó trên máy chủ devpi của tôi không phải pypi. cảm ơn.
ckot

Khi bạn nói gói trở nên có thể chỉnh sửa, bạn có nghĩa là người dùng sẽ phải chạy lại 'python setup.py sdist' sau khi thay đổi tệp gói? Hoặc chạy lệnh trên là không cần thiết?
biến

@variable khi bạn cài đặt một gói cục bộ với 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
ely

0

Một điểm khác biệt nữa: khi bạn chạy python setup.py developphiê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 --editablebạn sẽ phải vượt qua --premộ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 .)

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.