Xóa mô-đun python được cài đặt trong chế độ phát triển


92

Xin chào, tôi đang thử đóng gói python bằng cách sử dụng setuptools và để kiểm tra, tôi đã cài đặt mô-đun ở chế độ phát triển. I E

python setup.py develop

Điều này đã thêm thư mục mô-đun của tôi vào sys.path. Bây giờ tôi muốn gỡ bỏ mô-đun có cách nào để làm điều này?

Cảm ơn trước


4
Bắt đầu sử dụng piphoặc trình quản lý khác có khả năng gỡ cài đặt để quản lý các gói python.
Tomasz Wysocki,

1
@Tomasz Làm cách nào để bạn làm điều tương tự python setup.py developvớipip ?
akaihola

7
pip cài đặt -e.
Tomasz Wysocki

11
'pip' không phải là câu trả lời đúng cho câu hỏi này. Cài đặt một dự án bạn đang phát triển bằng 'pip' để chạy hoặc sử dụng nó có nghĩa là bạn sẽ phải cài đặt lại mỗi khi sửa đổi mã nguồn. Cách chính xác là sử dụng 'setup.py development' như câu hỏi ban đầu đã nêu.
Jonathan Hartley

6
@JonathanHartley Đó hoàn toàn là sai; pip có đối số --editable(hoặc -e) hoạt động gần tương đương với setuptools 'develop . Tôi nghĩ rằng có lẽ --editablenó mới hơn nhận xét của bạn, nhưng không - một tìm kiếm nhanh về pip repo trên GitHub sẽ hiển thị các tham chiếu đến các tệp có thể chỉnh sửa trong các cam kết vào năm 2009. Hơn nữa, tôi thấy rằng điều này đã được Tomasz Wysocki chỉ ra trước khi bạn nhận xét. !
Mark Amery

Câu trả lời:


224

Sử dụng tùy chọn --uninstallhoặc -uđể develop:

python setup.py develop --uninstall

Thao tác này sẽ xóa nó khỏi easy-install.pth và xóa liên kết .egg. Điều duy nhất nó không làm là xóa các tập lệnh (chưa).


3
Lưu ý rằng nếu phiên bản phát triển của bạn đã cài đặt một số tệp thực thi và bạn đã thay đổi chúng trong tệp của mình setup.py, bạn nên xóa chúng theo cách thủ công.
norok2

1
Tôi chạy nó như đã giải thích, không có lỗi trong đầu ra, nhưng tôi vẫn có thể nhập gói phát triển của mình trên toàn cầu, có vẻ như nó chưa bị xóa. EDIT: Tôi biết tại sao, tôi đã phải chạy nó với --usertùy chọn như tôi đã làm trong quá trình cài đặt:python setup.py develop --uninstall --user
Marek

Tôi không nghĩ rằng điều này là an toàn vì mọi thứ có thể thay đổi trong việc phát triển (ví dụ) đổi tên mô-đun. Bạn cần xóa mọi thứ theo cách thủ công.
mathtick

@ norok2 các lệnh thủ công người ta phải chạy để xóa các tệp thực thi đó là gì. Theo như tôi biết ở trên hoạt động đối với một số phiên bản python / pip nhất định mặc dù tôi không chắc phiên bản nào.
Charlie Parker

1
@CharlieParker rmhoặc deltùy thuộc vào hệ điều hành của bạn. Ý tôi muốn nói là nếu bạn có một số tệp thực thi tại thời điểm bạn cài đặt và sau đó thay đổi tên của chúng (hoặc xóa chúng) trong của bạn setup.py, thì setup.pybạn sẽ không biết về chúng nữa (bất kể là pip/ pythonphiên bản của bạn và bạn cần phải chăm sóc chúng theo cách thủ công. Chúng thường nằm trong một số binthư mục trên hệ thống POSIX (đọc Linuxes, BSD, MacOS X), không thể nhớ về Win.
norok2

16

Chỉnh sửa easy-install.pth trong thư mục gói trang của bạn và xóa dòng trỏ đến phiên bản phát triển của gói đó.


Yeah tôi đã làm chính xác này và một tập tin hơn là có theo tên gói-trứng-link hoặc một cái gì đó mà tôi lấy ra và bây giờ tham chiếu đến các module là loại bỏ cám ơn :)
copyninja

10
"setup.py phát triển --uninstall" thực hiện điều này cho bạn, hãy xem câu trả lời @ pjeby của
Jonathan Hartley

3
Điều này làm việc cho tôi khi develop --uninstallkhông thành công vì tôi đã chia một dự án thành hai và dự án sai vẫn nằm trong thư mục gốc.
Wesley Baugh

1

Tôi đã có một vấn đề tương tự như thế này trước đây. Những gì tôi đã làm là tải lên trình bao Python, nhập mô-đun và sau đó in__file__ thuộc tính . Từ đó, tôi sẽ chỉ xóa thư mục hoặc tệp được liên kết.

Những gì bạn có thể muốn xem xét là sử dụng virtualenv hệ thống này cho phép bạn tạo một phiên bản python tách biệt với hệ thống của bạn. Bất kỳ mô-đun nào bạn cài đặt hoặc sử dụng trong trường hợp này đều được bao gồm cả phiên bản của mô-đun này.

Tôi giữ tất cả các dự án của mình bây giờ bên trong virtualenv chứa riêng, cho phép tôi cài đặt và sử dụng bất kỳ mô-đun nào tôi muốn mà không phải lo lắng về việc vặn các mô-đun từ các dự án khác.


Vâng từ lần sau tôi chơi với các gói, tôi sẽ sử dụng cái này để không làm hỏng hệ thống Python của mình. Cảm ơn vì thông tin
copyninja
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.