2016-03-11 23 views
10

Tôi gặp lỗi đầu vào trong pycharm khi gỡ lỗi và chạy.Cách nhập tệp python nằm trong cùng thư mục con trong dự án pycharm

Cấu trúc dự án của tôi bắt nguồn từ đúng, etc./HW3/. để HW3 là thư mục gốc.

Tôi có thư mục con trong HW3, util và tệp, util/util.py. Tôi có một tệp khác trong số util được gọi là run_tests.py.

Trong run_tests.py, tôi có cơ cấu nhập khẩu sau,

from util.util import my_functions, etc. 

Điều này mang lại một lỗi đầu vào, from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package


Tuy nhiên, trong dự án chính xác cùng, trong thư mục khác (cùng cấp như util) được gọi là data, tôi có một tệp data/data_prep.py, cũng có chức năng nhập từ util/util.py sử dụng câu lệnh nhập tương tự ... và nó chạy mà không có bất kỳ sự cố nào S.


Rõ ràng, tôi đang làm điều này như một bài tập về nhà, vì vậy tôi không có kinh nghiệm ... nhưng tôi đã thực hiện cấu hình này chính xác cho 3 bài tập về nhà trước và chạy vào không vấn đề, vì vậy tôi không có ý tưởng làm thế nào để thậm chí khắc phục vấn đề này - đặc biệt là khi các tập tin khác hoạt động.


Sự cố sẽ biến mất khi tôi di chuyển tệp sang thư mục khác. Vì vậy, tôi đoán câu hỏi này là Làm cách nào để nhập tệp python nằm trong cùng một thư mục trong dự án pycharm? Vì pycharm gây ra lỗi nếu tôi chỉ cần import util và nhắc tôi sử dụng tên đầy đủ từ gốc.

+0

làm bạn có một '__init py' __. Nếu không, tạo ra một và thêm từ 'util.util my_function' nhập khẩu sau đó thử nhập khẩu nó trong file – danidee

+0

Và tôi đặt' __init__. py' trong thư mục cơ sở (HW3 trong câu hỏi của tôi) với dòng đó trong nó? – bordeo

+0

không có trong thư mục 'util', cho biết python rằng nó là một gói,' __init __. Py' cũng có thể được sử dụng để nhập/nạp mô-đun quá – danidee

Trả lời

5

Nếu bạn không có một __init__.py tạo và thêm dòng này

from util.util import my_function 

sau đó bạn có thể dễ dàng nhập các module trong kịch bản của bạn các __init__.py nói với trăn rằng nó nên đối xử với thư mục đó như là một gói python , nó cũng có thể được sử dụng để nhập/nạp mô-đun.

trong hầu hết các trường hợp, __init__.py trống.

Trích dẫn các tài liệu

Các tập tin __init__.py được yêu cầu phải thực hiện Python đối xử với thư mục có chứa các gói; điều này được thực hiện để ngăn các thư mục có tên chung, chẳng hạn như chuỗi, từ vô tình ẩn các mô-đun hợp lệ xảy ra sau này trên đường dẫn tìm kiếm mô-đun. Trong trường hợp đơn giản nhất, __init__.py chỉ có thể là một tệp trống, nhưng nó có thể cũng thực thi mã khởi tạo cho gói hoặc đặt biến __all__ , được mô tả sau.

2

Trong Pycharm bạn chỉ có thể thêm . trước .py tập tin mà bạn đang đi để nhập nó từ cùng thư mục. Trong trường hợp của bạn nó sẽ được

from .util import my_functions 
Các vấn đề liên quan