Tôi sẽ không tham gia vào các chiến dịch đổi tên và thay vào đó tập trung vào việc chỉ cho bạn cách làm những gì bạn muốn (cho dù đó là "tốt cho bạn" hay không ;-). Giải pháp không khó ...
Chỉ cần đặt __path__
! Một cuộc biểu tình nhỏ:
$ mkdir /tmp/modules /tmp/packages
$ mkdir /tmp/packages/openid
$ echo 'print "Package!"' > /tmp/packages/openid/__init__.py
$ gvim /tmp/modules/openid.py
$ PYTHONPATH='/tmp/modules:/tmp/packages' python -c'import openid'
Module!
Package!
này cho thấy một mô-đun openid quản lý để nhập khẩu một đồng âm gói mặc dù con đường của mô-đun đến trước đó trong sys.path, vàsys.modules['openid']
rõ ràng là đã được thiết lập tại thời điểm đó. Và tất cả những "bí mật" là mã đơn giản openid.py của ...:
print "Module!"
__path__ = ['/tmp/packages']
import openid
mà không có sự phân công __path__
, tất nhiên, nó sẽ chỉ phát ra Module!
.
Cũng hoạt động để nhập các mô-đun con trong gói, tất nhiên. Do:
$ echo 'print "Submod!"' > /tmp/packages/openid/submod.py
và thay đổi openid.Dòng cuối cùng py để
from openid import submod
và bạn sẽ thấy:
$ PYTHONPATH='/tmp/modules:/tmp/packages' python -c'import openid'
Module!
Package!
Submod!
$
Nguồn
2009-08-11 15:20:26
'đổi tên tập tin của bạn' – SilentGhost
lý do không đổi tên tập tin là gì? Nó có vẻ như sửa chữa nhỏ so với được tìm kiếm một cách xung quanh nó. – Zoomulator
Tệp tin ngữ nghĩa nên được gọi là openid, vì nó nằm trong một mô-đun có "loại" bí danh. openid là tên của loại. –