Bạn có ba tùy chọn cơ bản tại đây. Tôi đã trải qua cả ba trong cả môi trường sản xuất và các dự án cá nhân. Theo nhiều cách, họ xây dựng lẫn nhau. Tuy nhiên, lời khuyên của tôi là chỉ cần bỏ qua đến bài cuối cùng.
Vấn đề cơ bản là bạn cần thư mục ./src
để nằm trong đường dẫn tìm kiếm trăn. Điều này thực sự là những gì bao bì python là tất cả về.
PYTHONPATH
Các đơn giản nhất, người sử dụng định nghĩa cách để điều chỉnh đường python của bạn là thông qua môi trường biến PYTHONPATH
. Bạn có thể đặt nó ở thời gian chạy, làm một cái gì đó như:
PYTHONPATH=/src python src/gui/gui.py
Bạn có thể dĩ nhiên cũng thiết lập này lên trong môi trường toàn cầu của bạn vì vậy hy vọng tất cả các quá trình cần nó sẽ tìm ra đúng PYTHONPATH
. Nhưng, chỉ cần nhớ, bạn sẽ luôn luôn quên một. Thường vào lúc 3 giờ sáng khi nhiệm vụ cron
của bạn cuối cùng cũng chạy.
Gói Site
Để tránh cần một biến môi trường, lựa chọn của bạn là khá nhiều bao gồm phần mềm của bạn trong một mục nhập hiện có trong đường dẫn nguồn, hoặc tìm một số cách bổ sung thêm một đường dẫn tìm kiếm mới.Vì vậy, điều này có thể có nghĩa là thả nội dung của thư mục src
của bạn vào /usr/lib/python2.7/site-packages
hoặc bất cứ nơi nào hệ thống của bạn site-packages
được đặt.
Vì bạn có thể không thực sự bao gồm mã trong các gói trang web, bạn có thể tạo một liên kết tượng trưng cho hai gói con của bạn.
Đây là khóa học ít lý tưởng vì một số lý do. Nếu bạn không cẩn thận với việc đặt tên thì đột nhiên mọi chương trình python trên máy được tiếp xúc với các xung đột tên tiềm năng. Bạn đang hiển thị phần mềm của mình cho mọi người dùng trên máy. Bạn có thể gặp sự cố nếu python được cập nhật. Nếu bạn thêm một gói con mới, bây giờ bạn phải tạo một liên kết tượng trưng mới.
Cách tiếp cận tốt hơn một chút là bao gồm tệp .pth
ở đâu đó trong gói trang web của bạn. Khi python gặp các tệp này, nó sẽ thêm nội dung (được cho là tên của một thư mục) vào đường dẫn tìm kiếm. Điều này tránh được vấn đề phải nhớ thêm một liên kết mới cho mỗi gói con mới.
virtualenv và đóng gói
Giải pháp tốt nhất là chỉ cần cắn đạn và làm bao bì python thực. Điều này, kết hợp với các công cụ tuyệt vời như virtualenv and pip cho phép bạn có môi trường python bị cô lập (hoặc bán cô lập).
Trong virtualenv, bạn sẽ có một tùy chỉnh site-packages
chỉ cho dự án của bạn nơi bạn có thể dễ dàng cài đặt phần mềm vào đó, tránh tất cả các vấn đề của giải pháp trước đó. virtualenv cũng làm cho nó dễ dàng để duy trì các tập lệnh thực thi để môi trường python nó chạy dưới chính xác như bạn mong đợi.
Nhược điểm duy nhất là bạn phải viết và duy trì setup.py
để hướng dẫn pip
(trình cài đặt python) bao gồm phần mềm của bạn trong virtualenv. Nội dung sẽ là một cái gì đó như:
!/usr/bin/env python
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='myproject',
package_dir={'myproject': 'src'},
scripts=['src/gui/gui.py', 'src/core/tools/tool1.py', 'src/core/tools/tool2.py']
)
Vì vậy, để thiết lập môi trường này, nó sẽ giống như thế này:
virtualenv env
env/bin/pip install -e setup.py
Để chạy script của bạn, sau đó bạn chỉ muốn làm điều gì đó như:
env/bin/tool1.py
Để bắt đầu có 'python -m core.tools.tool1' – Kos
Bạn đang sử dụng phiên bản python nào? – filmor
@filmor: Đã chỉnh sửa. – krlmlr