Sử dụng các biến từ một tập lệnh Python trong các tập lệnh Python khác?


9

Tôi muốn thiết lập một tệp python duy nhất chứa các biến có vị trí của tất cả các nguồn dữ liệu của tôi. Điều này sau đó sẽ được sử dụng bởi tất cả các tập lệnh khác của tôi, sau đó khi nguồn dữ liệu thay đổi, tôi chỉ phải chỉnh sửa một tệp.

Dữ liệu của tôi sẽ trông giống như thế này:

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

và như thế...

Làm cách nào để tôi tải tất cả các tập lệnh khác của mình để tải hoặc truy cập các biến này trong Data_source.py?


Các câu hỏi như thế này, đó là Python thuần túy chứ không phải về mô-đun Python hoặc gói trang web cho GIS thường nên được nghiên cứu / hỏi tại Stack Overflow .
PolyGeo

Câu trả lời:


10

Bạn có thể tạo một mô-đun Python đã cài đặt có thể nhập được từ mọi tập lệnh Python bạn chạy bằng cách sử dụng Distutils để đóng gói.

Từ tài liệu Python:

Nếu tất cả những gì bạn muốn làm là phân phối một mô-đun gọi là foo, có trong tệp foo.py, thì tập lệnh thiết lập của bạn có thể đơn giản như sau:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Sau đó bạn có thể cài đặt nó qua

python.exe setup.py install

Và sau đó bạn có thể nhập foo từ bất kỳ tập lệnh Python nào hoặc bạn có thể sử dụng

python.exe setup.py bdist_wininst

Để tạo một trình cài đặt windows cho mô-đun để bạn có thể phân phối nó cho các máy tính khác.


có một chương hay trong cuốn sách 'Byte of Python' cho thấy các ví dụ về việc xây dựng bằng cách sử dụng các mô-đun nhập khẩu.
jonatr

Tôi thích đề xuất tạo Mô-đun này nhưng tôi không rành về chúng. Lệnh "python.exe setup.py install" sẽ sử dụng một con trỏ tới foo.py hoặc nó sẽ sử dụng những gì hiện có trong foo.py? Nếu sau này tôi thay đổi foo.py thì mô-đun vẫn còn hiện hành? Cảm ơn.
Lỗi người dùng

Tôi cũng sẽ tìm cuốn sách đó. Cảm ơn sự giúp đỡ của Jason và jonatr.
Lỗi người dùng

Sửa từ vựng: từ python chính xác hơn là "gói" - hữu ích cho việc tra cứu tài liệu, và rõ ràng rằng các gói và mô-đun là hai thứ khác nhau trong thế giới python. Ngoài ra, một gợi ý / gợi ý: Nếu bạn thực hiện setup.py develop(thay vì install), các chỉnh sửa đối với gói sẽ được chọn ngay khi chúng được lưu mà không cần cài đặt lại. (Điều này có lẽ phù hợp với data_source.py của người hỏi ban đầu.)
Dan S.

3
Không phải người dùng chỉ hỏi làm thế nào để nhập? Trả lời cho điều đó dưới đây.
sgillies

12

Trong bất kỳ tập lệnh nào trong cùng thư mục với Data_source.py, hãy đặt

from Data_sources import BC_BEC, BC_TFL

ở trên cùng Điều này hoạt động vì thư mục làm việc luôn nằm ở đầu đường dẫn python trừ khi bạn sửa đổi nó.

>>> import sys
>>> sys.path[0] == ''
True

Xem thêm: http://diveintopython.org/getting_to_ledge_python/everything_is_an_object.html#d0e4550

Nếu bạn muốn chia sẻ dữ liệu rộng rãi hơn, bạn có thể đóng gói dữ liệu như những người khác đã đề xuất.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.