2016-10-28 31 views
6

Pycharm 2016.2.3, Mac OS X 10.11.1, Python 3.5 (Homebrew);Tuyên bố nhập hoạt động trên PyCharm nhưng không phải từ thiết bị đầu cuối

Tôi có cấu trúc thư mục này

project 
    /somepackage 
    /subpackage 
    __init__.py 
    bar.py 
    __init__.py 
    foo.py 

foo.py: 
import somepackage.subpackage.bar 
print("foo") 

bar.py: 
print("bar") 

Vì vậy, sản lượng dự kiến ​​của tôi là

bar 
foo 

này hoạt động tốt khi chạy từ PyCharm. Tuy nhiên, khi tôi chạy nó từ thiết bị đầu cuối của tôi, tôi nhận được một ImportError:

$ pwd 
$ /home/project (not the actual path; just omitting some personal stuff) 
$ python3.5 somepackage/foo.py 
File "foo.py", line 1, in <module> 
import somepackage.subpackage.bar 
ImportError: No module named 'somepackage' 

Tôi đã tìm thấy this question, đó là về cùng một vấn đề. Tuy nhiên, không có giải pháp được đề xuất nào phù hợp với tôi, vì tôi thực sự đang sử dụng cùng một trình thông dịch Python như PyCharm và tôi hiện đang nằm trong thư mục chứa thư mục somepackage/.

Có ai có bất kỳ đề xuất nào khác về cách giải quyết vấn đề này không? Cám ơn sự tử tế của anh!

+1

Bạn có somepackage có tệp '__init __. Py' không? Điều này cho thấy python rằng nó là gói – Mitta

+0

Vâng. Tôi sẽ chỉnh sửa câu hỏi của tôi, cảm ơn bạn! – Pibborn

Trả lời

8

Bạn đang chạy foo.py như một tập lệnh, nhưng bạn thực sự đang sử dụng nó như một mô-đun. Vì vậy, các giải pháp thích hợp là để chạy nó như là một mô-đun:

python3 -m somepackage.foo 

Đối với hồ sơ, thay thế khác là để chỉnh sửa đường dẫn của bạn như:

export PYTHONPATH=. 

(Hoặc bạn có thể đặt thư mục tuyệt đối trong đó, và tất nhiên bạn nên nối thêm bất kỳ thư mục nào khác đã có trong PYTHONPATH của bạn.) Điều này gần hơn với những gì PyCharm làm, nhưng ít có tính triết học hơn.

+0

Cả hai đề xuất của bạn đều hoạt động. Cảm ơn bạn! – Pibborn

+0

Phương pháp tiếp cận # 1 phù hợp với tôi. Tài liệu này ở đâu? – alex

+1

@alex Nó nằm trong [Tài liệu Dòng lệnh và Môi trường] (https://docs.python.org/3/using/cmdline.html), nhưng không rõ ràng khi bạn tìm kiếm ở đó trừ khi bạn đã biết giải pháp! Thật đáng tiếc là nó không được đề cập trong phần [Mô-đun của hướng dẫn] (https://docs.python.org/3/tutorial/modules.html), hoặc thậm chí kỹ thuật [Tài liệu tham khảo Hệ thống Nhập khẩu] (https://docs.python.org/3/reference/import.html). –

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