2012-09-02 16 views
8

Cách lấy đường dẫn tuyệt đối của mô-đun có thể được nhập ở nơi khác?Python: Tìm đường dẫn tuyệt đối của mô-đun đã nhập

+0

Bạn có nghĩa là đường dẫn hệ thống tệp vào tệp hoặc đường dẫn mô-đun Python không? – Keith

+0

@Kỹ thuật hệ thống tệp. – Determinant

+0

Trong trường hợp bất kỳ ai đang tìm cách thực hiện điều này bằng chức năng 'function_name .__ code__' hoạt động tốt khi nhận được đường dẫn tệp đầy đủ. – KBoehme

Trả lời

24

Như các câu trả lời khác đã nói, bạn có thể sử dụng __file__. Tuy nhiên, lưu ý rằng điều này sẽ không cung cấp đường dẫn đầy đủ nếu mô-đun kia nằm trong cùng thư mục với chương trình. Vì vậy, để được an toàn, làm một cái gì đó như thế này:

>>> import os 
>>> import math 
>>> os.path.abspath(math.__file__) 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/math.so' 

Dưới đây là một ví dụ với một mô-đun Tôi đã gọi checkIP để minh họa cho lý do tại sao bạn cần phải nhận được abspath (checkIP.py là trong thư mục hiện hành):

>>> import os 
>>> import checkIP 
>>> os.path.abspath(checkIP.__file__) 
'/Users/Matthew/Programs/checkIP.py' 
>>> checkIP.__file__ 
'checkIP.py' 
1

Bạn có thể thử:

import os 
print os.__file__ 

để xem nơi các module nằm.

1

Nếu đó là một mô-đun bên trong cây thư mục PYTHONPATH của bạn (và có thể truy cập bằng cách đặt __init__.py trong thư mục của thư mục và thư mục mẹ), sau đó gọi thuộc tính đường dẫn.

>>>import sample_module 
>>>sample_module.__path__ 
['/absolute/path/to/sample/module'] 
Các vấn đề liên quan