Có rất nhiều thứ đang diễn ra tại đây. bạn nên đọc về các gói python và quản lý mô-đun http://docs.python.org/2/tutorial/modules.html#packages nhưng ý tưởng cơ bản là fileX cần biết vị trí file1 và file2 để sử dụng chúng.
Để biến một thư mục thành một gói, nó chỉ cần chứa tệp __init__.py
. Những gì tôi sẽ đề nghị bạn làm là (trong một thiết bị đầu cuối)
$ touch Foo/__init__.py
$ touch Foo/Project1/__init__.py
(giả sử bạn đang sử dụng unix/linux).
Sau đó, bằng cách nào đó, tệpX cần biết vị trí của gói Foo
. Bạn có thể gọi số sys.path.append(PATH)
nơi PATH là vị trí của Foo.
cuối cùng bên trong tệpX.py bạn phải
import sys
sys.path.append(PATH) #replace PATH with the path to Foo
from Foo.Project1 import file1
#use its functions
file1.function_name(argument)
nếu bạn thực sự muốn chỉ nói function_name
mà không preceeding file1.
bạn có thể nhập tất cả các chức năng của mình bằng cách nói from Foo.Project1.file1 import *
tuy nhiên xin vui lòng lưu ý rằngfrom module import *
là cao tán thành vì nó pha trộn tên và làm cho mã ít dễ đọc và dễ hiểu hơn
Nguồn
2013-01-24 19:40:14
Project1 và Project2 đều đang ngồi trên máy chủ của tôi với cả hai phiên bản được kiểm soát. Nếu Project1 được cập nhật, thì tôi sẽ phải cập nhật gói đã cài đặt mỗi lần trên project2. Nhưng, nếu tôi thao tác sys.path của tôi, chỉ cần thực hiện một lệnh git pull trên Project1 sẽ cập nhật module của tôi. Tôi có làm gì không? Hoặc nó là okay để làm điều đó! Cảm ơn! – Abhishek