2012-02-05 23 views
6

Tôi muốn có một hệ thống phân cấp trông như thế này (và nó phải giống như thế này)nhập trong thư mục khác từ một "song song" tiểu thư

main_folder\ 
    main.py 
    domain_sub_directory\ 
     __init__.py 
     domain.py 
    ui_sub_direcotory\ 
     __init__.py 
     menu.py 

tôi cần phải kích hoạt frome ui.py main.py nhưng sau đó acces domain.py từ menu.py. Làm thế nào tôi có thể làm điều đó ?

Tôi đã làm điều này trong chính:

import ui_sub_directory.ui 

này trong ui:

import domain_sub_directory.domain 

Nhưng module giao diện người dùng không thấy module miền.

Tôi đang làm gì sai?

BTW tôi có cần phải nhập lớp mà tôi đang làm việc cùng không? và sự khác biệt giữa điều này và:

from x import y 

?

* Chỉnh sửa * đối với những người không hiểu tôi muốn nhập khẩu từ:

folder1 /folder2 /folder3 /module1 

Tôi muốn nhập khẩu này:

folder1 /folder2 /module2 
+0

'nhập ui_sub_directory.ui()' đã sai cú pháp và logic. – Gandaro

+0

Gần như là một bản sao của điều này: http://stackoverflow.com/questions/8951255/import-script-from-a-parent-directory –

+1

Tôi cũng có thể hỏi bạn "sự khác biệt của quả táo và quả lê" là gì là một câu hỏi tương tự. Chúng hoàn toàn khác nhau. Cái đầu tiên là sai, và cái thứ hai thì không. Vui lòng [đọc về nhập khẩu] (http://docs.python.org/tutorial/modules.html). – Gandaro

Trả lời

7

Bạn hỏi sự khác biệt trong các báo cáo nhập khẩu . Một phần của nó là một vấn đề của không gian tên mà đối tượng sẽ được nhập dưới, và cũng là một cách để giới hạn số lượng chính xác của mã được nhập khẩu.

import os 
from os import path 

Cả hai os và os.path là các mô-đun. Việc nhập khẩu đầu tiên toàn bộ mô-đun os và tất cả các mô-đun con của nó. Điều này có thể nhiều hơn bạn cần, và đối với các thư viện lớn có thể không cần thiết. Mặc dù bạn vẫn có thể truy cập đường dẫn qua os.path

Biểu mẫu thứ hai là một cách để chỉ chọn lọc nhập mô-đun đường dẫn. Ngoài ra, thay vì truy cập vào mã của bạn theo không gian tên os, giờ đây, mã này hiện đang ở cấp cơ sở chỉ là path.

Trong khi liên kết này Import Script from a Parent Directory không cho bạn biết tất cả mọi thứ bạn cần biết, đây là một số thông tin cụ thể hơn:

# this will make your package available on your pythonpath 
sys.path.append("/path/to/main_folder") 

Sau đó, các kịch bản khác nhau của bạn có thể tham khảo mô-đun khác đều tương đối đến dưới main_folder, chẳng hạn như:

from ui_sub_direcotory import menu 

from domain_sub_directory import domain 

import main 

Đây là tất cả các mục nhập hợp lệ trong gói của bạn.

+0

Nếu bạn không trả lời thì xin vui lòng ít nhất là gửi một liên kết, tôi biết không đủ tiếng Anh để truyền đạt những suy nghĩ của tôi vì vậy tôi không thể tìm kiếm nó. Tôi đã tìm thấy nhập khẩu bình thường, nhưng không tìm thấy "ngược". Cảm ơn bạn ít nhất cho phần thứ hai tôi đoán. – Kalec

+0

Các liên kết đã được đăng trong phần bình luận. Nhưng tôi cập nhật với một số trợ giúp khác – jdi

+0

Ok, xin lỗi vì có quá nhiều vấn đề đơn giản nhưng tôi gặp lỗi này: "SyntaxError: (lỗi unicode) 'unicodeescape' codec không thể giải mã byte ở vị trí 13-15: kết thúc chuỗi khi thoát chuỗi "Con đường của tôi trông như thế nào? D: \ Info \ Eclipse Workspace \ Test \ Test_src \ ui? hay không ? Tôi không nhận được nó – Kalec

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