2014-12-17 18 views
12

Tôi đang sử dụng hai gói python có cùng tên.Làm cách nào để xử lý các gói python có tên xung đột?

Có cách nào kinh điển hay pythonic để xử lý cài đặt hai gói với tên mâu thuẫn? Cho đến nay, tôi chỉ thỉnh thoảng cần một trong các gói trong quá trình phát triển/xây dựng, vì vậy tôi đã sử dụng một virtualenv riêng để xử lý xung đột, nhưng nó làm cho bước xây dựng phức tạp hơn và tôi tự hỏi không có cách tốt hơn để xử lý nó.

+2

Virtualenv là cách tốt nhất, tôi nghĩ vậy. –

Trả lời

2

Bạn có thể sử dụng tùy chọn --target cho pip và cài đặt vào một vị trí thay thế:

pip install --target=/tmp/test/lib/python3.6/site-packages/alt_alembic alembic 

Sau đó, khi bạn nhập trong python, thực hiện đầu tiên như bình thường và cho alt thực hiện nhập từ không gian tên như thế này:

import alembic # alembic.io version 
from alt_alembic import alembic as alt_alembic # pip version 

Sau đó, khi bạn thực hiện cuộc gọi đến đó, bạn có thể gọi alt_alembic.fu nction() và với một trong đó không phải là trong PyPi, alembic.function() Con đường mục tiêu của tôi có/tmp/thử nghiệm như tôi đã sử dụng một env ảo. Bạn sẽ cần phải thay thế đường dẫn đó với đường dẫn chính xác để cài đặt python của bạn.

-1

cách khoảng nhập khẩu tuyệt đối và tương đối.

https://docs.python.org/2/whatsnew/2.5.html#pep-328-absolute-and-relative-imports

+3

Sử dụng nhập khẩu tương đối sẽ xử lý mô đun ** mô-đun ** hoặc ** nội bộ ** xung đột với các gói và mô-đun cấp cao nhất khác, nhưng sẽ không có ích khi hai gói cấp cao nhất được đặt tên giống nhau. –

+0

thì chúng ta nên sử dụng virtualenv – Cedar

Các vấn đề liên quan