Jika paket tersebut ada di PYPI, unduh dan ketergantungannya ke beberapa direktori lokal. Misalnya
$ mkdir / pypi && cd / pypi
$ ls -la
-rw-r - r-- 1 pavel staf 237954 19 Apr 11:31 Flask-WTF-0.6.tar.gz
-rw-r - r-- 1 pavel staf 389741 22 Feb 17:10 Jinja2-2.6.tar.gz
-rw-r - r-- 1 pavel staf 70305 11 Apr 00:28 MySQL-python-1.2.3.tar.gz
-rw-r - r-- 1 pavel staf 2597214 10 Apr 18:26 SQLAlchemy-0.7.6.tar.gz
-rw-r - r-- 1 pavel staf 1108056 22 Feb 17:10 Werkzeug-0.8.2.tar.gz
-rw-r - r-- 1 pavel staf 488207 10 Apr 18:26 boto-2.3.0.tar.gz
-rw-r - r-- 1 pavel staf 490192 16 Apr 12:00 flask-0.9-dev-2a6c80a.tar.gz
Beberapa paket mungkin harus diarsipkan ke dalam tarbal tampak serupa dengan tangan. Saya sering melakukannya ketika saya menginginkan versi yang lebih baru (kurang stabil) dari sesuatu. Beberapa paket tidak pada PYPI, jadi hal yang sama berlaku untuk mereka.
Misalkan Anda memiliki aplikasi Python yang terbentuk dengan benar di ~/src/myapp
. ~/src/myapp/setup.py
akan memiliki install_requires
daftar yang menyebutkan satu atau lebih hal yang Anda miliki di /pypi
direktori Anda . Seperti itu:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
Jika Anda ingin dapat menjalankan aplikasi Anda dengan semua dependensi yang diperlukan saat masih meretasnya, Anda akan melakukan sesuatu seperti ini:
$ cd ~ / src / myapp
$ python setup.py mengembangkan --always-unzip --allow-hosts = Tidak ada --find-links = / pypi
Dengan cara ini aplikasi Anda akan dieksekusi langsung dari direktori sumber Anda. Anda dapat meretas sesuatu, dan kemudian menjalankan kembali aplikasi tanpa membangun kembali apa pun.
Jika Anda ingin menginstal aplikasi dan dependensinya ke dalam lingkungan python saat ini, Anda akan melakukan sesuatu seperti ini:
$ cd ~ / src / myapp
$ easy_install --always-unzip --allow-hosts = Tidak ada --find-links = / pypi.
Dalam kedua kasus, build akan gagal jika satu atau lebih dependensi tidak ada dalam /pypi
direktori. Itu tidak akan mencoba untuk secara sembarangan menginstal hal-hal yang hilang dari Internet.
Saya sangat merekomendasikan untuk memanggil setup.py develop ...
dan easy_install ...
dalam lingkungan virtual aktif untuk menghindari kontaminasi lingkungan Python global Anda. Ini (virtualenv) cukup banyak cara untuk pergi. Jangan pernah memasang apa pun ke lingkungan Python global.
Jika mesin yang Anda buat aplikasi Anda memiliki arsitektur yang sama dengan mesin yang ingin Anda gunakan, Anda bisa langsung memasukkan seluruh direktori lingkungan virtual ke mana Anda easy_install
menambahkan semuanya. Tepat sebelum tarballing, Anda harus membuat direktori lingkungan virtual dapat dipindahkan (lihat opsi --relocatable ). CATATAN: mesin tujuan harus memiliki versi Python yang sama diinstal, dan juga setiap dependensi berbasis C aplikasi Anda mungkin harus sudah diinstal di sana juga (misalnya mengatakan jika Anda bergantung pada PIL , maka libpng, libjpeg, dll harus diinstal sebelumnya) .