Nếu gói trên PYPI, hãy tải xuống và phụ thuộc vào một số thư mục cục bộ. Ví dụ
$ mkdir / pypi && cd / pypi
$ ls -la
-rw-r - r-- 1 nhân viên pavel 237954 19 tháng 4 11:31 Flask-WTF-0.6.tar.gz
-rw-r - r-- 1 nhân viên pavel 389741 22 tháng 2 17:10 Jinja2-2.6.tar.gz
-rw-r - r-- 1 nhân viên pavel 70305 ngày 11 tháng 4 00:28 MySQL-python-1.2.3.tar.gz
-rw-r - r-- 1 nhân viên pavel 2597214 ngày 10 tháng 4 lúc 18 giờ 26 phút SQLAlchemy-0.7.6.tar.gz
-rw-r - r-- 1 nhân viên pavel 1108056 22 tháng 2 17:10 Werkzeug-0.8.2.tar.gz
-rw-r - r-- 1 nhân viên pavel 488207 ngày 10 tháng 4 lúc 18 giờ 26 phút boto-2.3.0.tar.gz
-rw-r - r-- 1 pavel staff 490192 16 tháng 4 12:00 12:00-0.9-dev-2a6c80a.tar.gz
Một số gói có thể phải được lưu trữ thành tarball trông tương tự bằng tay. Tôi làm điều đó rất nhiều khi tôi muốn một phiên bản mới hơn (kém ổn định hơn) của một cái gì đó. Một số gói không có trên PYPI, vì vậy cũng áp dụng cho chúng.
Giả sử bạn có một ứng dụng Python được hình thành đúng cách ~/src/myapp
. ~/src/myapp/setup.py
sẽ có install_requires
danh sách đề cập đến một hoặc nhiều thứ mà bạn có trong /pypi
thư mục của mình . Thích như vậy:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
Nếu bạn muốn có thể chạy ứng dụng của mình với tất cả các phụ thuộc cần thiết trong khi vẫn hack nó, bạn sẽ làm một cái gì đó như thế này:
$ cd ~ / src / myapp
$ python setup.py phát triển --always-unzip --allow-hosts = Không --find-links = / pypi
Bằng cách này, ứng dụng của bạn sẽ được thực thi trực tiếp từ thư mục nguồn của bạn. Bạn có thể hack mọi thứ, và sau đó chạy lại ứng dụng mà không cần xây dựng lại bất cứ thứ gì.
Nếu bạn muốn cài đặt ứng dụng của mình và các phụ thuộc của nó vào môi trường python hiện tại, bạn sẽ làm một cái gì đó như thế này:
$ cd ~ / src / myapp
$ easy_install --always-unzip --allow-hosts = Không --find-links = / pypi.
Trong cả hai trường hợp, bản dựng sẽ thất bại nếu một hoặc nhiều phụ thuộc không có trong /pypi
thư mục. Nó sẽ không cố gắng cài đặt bừa bãi những thứ còn thiếu từ Internet.
Tôi đặc biệt khuyên bạn nên gọi setup.py develop ...
và easy_install ...
trong một môi trường ảo đang hoạt động để tránh làm ô nhiễm môi trường Python toàn cầu của bạn. Đó là (virtualenv đó) khá nhiều cách để đi. Không bao giờ cài đặt bất cứ thứ gì vào môi trường Python toàn cầu.
Nếu máy bạn đã xây dựng ứng dụng của mình có kiến trúc giống như máy bạn muốn triển khai trên đó, bạn có thể chỉ cần tarball toàn bộ thư mục môi trường ảo mà bạn đã nhập easy_install
mọi thứ. Ngay trước khi tarballing, bạn phải làm cho thư mục môi trường ảo có thể định vị lại được (xem tùy chọn - tương đối ). LƯU Ý: máy đích cần phải cài đặt cùng một phiên bản Python và bất kỳ phụ thuộc dựa trên C nào, ứng dụng của bạn cũng có thể phải được cài đặt sẵn ở đó (ví dụ: nếu bạn phụ thuộc vào PIL , thì phải cài đặt sẵn libpng, libjpeg, v.v.) .