2012-12-30 25 views

Trả lời

4

Chỉ cần thêm một __init__.py tập tin trống để báo hiệu baz là một mô-đun và từ foo.py làm:

from baz import bar 

Trừ khi, tất nhiên, bạn có một lý do chính đáng để không làm baz thành một mô-đun (và sử dụng execfile).

+0

Cảm ơn bạn, tôi đang làm việc trên quyền này hiện nay. – user1938464

1

Câu hỏi ngụ ý rằng bạn muốn chạy chúng dưới dạng tập lệnh, vì vậy có: bạn có thể sử dụng execfile trong 2.X hoặc subprocess (gọi cho thông dịch viên và chuyển đoạn mã làm đối số). Bạn chỉ cần cung cấp đường dẫn tuyệt đối cho các tệp.

# Python 2.X only! 
execfile ('c:/python/scripts/foo/baz/baz.py') 

Thực hiện điều đó nghĩa là dễ vỡ, tất nhiên. Nếu baz luôn luôn là một subirectory của foo bạn có thể lấy nó từ tập tin foo của:

baz_dir = os.path.join(os.path.dirname(__file__), "baz") 
baz_file = os.path.join(baz_dir, "baz.py") 
execfile(baz_file) 

Nếu cả hai tập tin nằm trong vị trí có thể được nhìn thấy bởi python của bạn - ví dụ, các thư mục trong sys.path hoặc đã được thêm vào đường dẫn tìm kiếm bằng cách sử dụng site bạn có thể nhập baz từ foo và gọi trực tiếp chức năng của nó. Nếu bạn cần thực sự hành động dựa trên thông tin từ baz, thay vì chỉ kích hoạt một hành động, đây là một cách tốt hơn để đi. As long as there is an init.py in each folder Bạn chỉ có thể làm

import baz 
baz.do_a_function_defined_in_baz() 
2

import sys, thay đổi "sys.path" bằng cách thêm các con đường trong thời gian chạy, sau đó nhập các module sẽ giúp

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