2010-06-01 26 views
12

Tôi có một mô-đun tùy chỉnh trong một trong các thư mục trong PYTHONPATH của tôi có cùng tên với một trong các mô-đun thư viện chuẩn, để khi tôi import module_name, mô-đun đó được tải. Nếu tôi muốn sử dụng mô-đun thư viện chuẩn ban đầu, có cách nào để buộc Python nhập từ thư viện chuẩn thay vì từ thư mục PYTHONPATH, không đổi tên mô-đun tùy chỉnh và thay đổi mọi tham chiếu để trỏ đến tên mới?Mô-đun nhập khẩu từ thư viện chuẩn Python thay vì PYTHONPATH mặc định

+0

Có gì xấu khi đổi tên mô-đun của bạn? –

+0

Nó sẽ chỉ liên quan đến việc thực hiện thay đổi đối với hàng tá tệp. Nghe có vẻ như đó là giải pháp tốt nhất. – jrdioko

+0

Bạn có 'grep', vì vậy không quá khó để tìm ra từng cái và sửa chúng. –

Trả lời

11

Các giải pháp lý tưởng sẽ được đổi tên mô-đun của bạn để một cái gì đó không có trong thư viện chuẩn.

Bạn cũng có thể switch absolute imports on nếu bạn đang ở trên Python 2.5+:

from __future__ import absolute_import 
+0

Tôi sẽ sử dụng nhập khẩu tương đối như thế nào để lấy phiên bản thư viện chuẩn? – jrdioko

+0

Tôi hiểu sai câu hỏi của bạn, câu trả lời đã chỉnh sửa. –

+0

Điều này sẽ không thực sự hữu ích? –

5

Bạn có thể chọn các module bạn muốn nhập với các module imp:

import imp 
mymodule = imp.load_module(name, file, pathname, description) 
9

Đừng.

Nếu bạn vô tình chọn tên mô-đun thư viện chuẩn, hãy thay đổi tên mô-đun của bạn để kết thúc xung đột.

+0

Đây có lẽ là giải pháp tốt nhất, cả hai không gây nhầm lẫn trong các trình lập trình truy cập và thực tế là hành vi nhập một mô-đun không phải là nhập tương đối sẽ không thay đổi khi nhập tuyệt đối. –

-1

Cách tốt nhất để làm điều đó là để đưa dự án của bạn trong một thư mục giả "myproject" mà nằm trên:

/home/me/myproject

Thực hiện một liên kết tượng trưng đến myproject thư mục với một trong các đường dẫn trăn mặc định, ví dụ:

# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject

Bây giờ khi bạn muốn để nhập một mô-đun trong dự án của bạn chỉ cần mở một trình thông dịch python.

>>> from myproject.mymodule import *

Nó sẽ hoạt động như một sự quyến rũ.

Một điều cuối cùng, không đặt tên cho dự án của bạn giống như những gì được tìm thấy trong đường dẫn python, vì vậy bạn sẽ không gặp vấn đề trong khi nhập.

+0

Cách tốt hơn là sử dụng 'PYTHONPATH'. Ngoài ra, không sử dụng 'from x import *' vì nó gây nhầm lẫn với các công cụ phân tích tĩnh và làm cho khó hiểu hơn một biến đến từ đâu. – bfontaine

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