Vì vậy, tôi đang phát xung quanh với việc đóng gói một tập lệnh python mà tôi đã viết và nó có một mô-đun con, hãy gọi nó là submodule
. Cấu trúc thư mục trông như thế này:Python có thể nhập một mô-đun chưa được cài đặt
cool_script/
setup.py
cool_script.py
submodule/
__init__.py
implementation.py
Bây giờ, sau nhiều pip install .
và pip install -e .
cuộc gọi, tôi có tình huống mà submodule
thể được nhập khẩu toàn cầu. Bất kể ở đâu trên hệ thống của tôi, điều này sẽ luôn hoạt động:
$ python3
[...]
>>> import submodule
>>> submodule.__file__
'/home/me/fake/path/cool_script/submodule/__init__.py'
Nhưng tôi không biết tại sao.
Gói tôi đã thực hiện đã được gỡ cài đặt lại và pip không thể tìm thấy mô-đun con trong chỉ mục của nó. Không có gì trong dist-gói là một trong hai, tôi tự xóa cool_script.egg-link
mà vẫn ngồi quanh đó:
$ ls /usr/local/lib/python3.4/dist-packages | ack cool
$ ls /usr/local/lib/python3.4/dist-packages | ack submodule
$
Các PYTHONPATH
trống cũng như:
$ echo $PYTHONPATH
$
Tại sao Python biết vị trí của submodule
? Làm thế nào tôi có thể tìm ra?
Đã được cài đặt trong virtualenv chưa? Nó là một hệ thống Linux? –
Đây là một hệ thống Linux thực sự, và không, tôi đã làm những thí nghiệm này trên môi trường toàn cầu của tôi. Tôi biết điều đó rất câm. Bài học kinh nghiệm, tôi đoán vậy. – iFreilicht
Điều này nghe có vẻ ngu ngốc, nhưng bạn đã thử khởi động lại chưa? Có thể nó chỉ được lưu trữ ở đâu đó – RunOrVeith