Pipenv adalah alat manajemen virtualenv Python yang mendukung banyak sistem dan dengan baik menjembatani kesenjangan antara pip, python (menggunakan sistem python, pyenv atau asdf) dan virtualenv. Linux, macOS, dan Windows semuanya merupakan warga kelas satu di pipenv.
Pipenv secara otomatis membuat dan mengelola virtualenv untuk proyek Anda, serta menambahkan/menghapus paket dari Pipfile
saat Anda menginstal/menghapus paket. Ini juga menghasilkan proyek Pipfile.lock
, yang digunakan untuk menghasilkan build deterministik.
Pipenv terutama dimaksudkan untuk memberi pengguna dan pengembang aplikasi metode mudah untuk mencapai lingkungan proyek kerja yang konsisten.
Masalah yang ingin dipecahkan oleh Pipenv mempunyai banyak segi:
pip
dan virtualenv
secara terpisah: keduanya bekerja sama.requirements.txt
dengan hash paket bisa menjadi masalah. Pipenv menggunakan Pipfile
dan Pipfile.lock
untuk memisahkan deklarasi ketergantungan abstrak dari kombinasi terakhir yang diuji.$ pipenv graph
)..env
. pipanv
Instalasi
Fitur
Konsep Dasar
Perintah Lainnya
Penyelesaian Cangkang
Penggunaan
Contoh Penggunaan
Perintah
Temukan Proyek
Temukan virtualenv
Temukan Penerjemah Python
Instal Paket
Menginstal dari git
Instal ketergantungan dev
Tampilkan grafik ketergantungan
Hasilkan file kunci
Instal semua dependensi dev
Copot semuanya
Gunakan cangkangnya
Dokumentasi
Pipenv dapat diinstal dengan Python 3.7 ke atas.
Bagi sebagian besar pengguna, kami menyarankan menginstal Pipenv menggunakan pip
:
pip install --user pipenv
Atau, jika Anda menggunakan FreeBSD:
pkg install py39-pipenv
Atau, jika Anda menggunakan Gentoo:
sudo emerge pipenv
Atau, jika Anda menggunakan Void Linux:
sudo xbps-install -S python3-pipenv
Alternatifnya, beberapa pengguna lebih suka menggunakan Pipx:
pipx install pipenv
Atau, beberapa pengguna lebih suka menggunakan modul pip Python
python -m pip install pipenv
Lihat dokumentasi untuk instruksi terbaru.
?
pyenv
atau asdf
tersedia.Pipfile
.Pipfile
, jika tidak ada.Pipfile
ketika diinstal/dihapus..env
, jika ada.Untuk referensi perintah, lihat Perintah.
install
, semua paket [packages]
yang ditentukan akan diinstal. Untuk mengaktifkan penyelesaian pada ikan, tambahkan ini ke konfigurasi Anda ~/.config/fish/completions/pipenv.fish
:
eval (env _PIPENV_COMPLETE=fish_source pipenv)
Ada juga plugin ikan, yang secara otomatis akan mengaktifkan subkulit Anda untuk Anda!
Alternatifnya, dengan zsh, tambahkan ini ke konfigurasi Anda ~/.zshrc
:
eval "$(_PIPENV_COMPLETE=zsh_source pipenv)"
Alternatifnya, dengan bash, tambahkan ini ke konfigurasi Anda ~/.bashrc
atau ~/.bash_profile
:
eval "$(_PIPENV_COMPLETE=bash_source pipenv)"
Penyelesaian shell ajaib sekarang diaktifkan!
$ pipenv --help
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Options:
--where Output project home information.
--venv Output virtualenv information.
--py Output Python interpreter information.
--envs Output Environment Variable options.
--rm Remove the virtualenv.
--bare Minimal output.
--man Display manpage.
--support Output diagnostic information for use in
GitHub issues.
--site-packages / --no-site-packages
Enable site-packages for the virtualenv.
[env var: PIPENV_SITE_PACKAGES]
--python TEXT Specify which version of Python virtualenv
should use.
--clear Clears caches (pipenv, pip). [env var:
PIPENV_CLEAR]
-q, --quiet Quiet mode.
-v, --verbose Verbose mode.
--pypi-mirror TEXT Specify a PyPI mirror.
--version Show the version and exit.
-h, --help Show this message and exit.
Create a new project using Python 3.7, specifically:
$ pipenv --python 3.7
Remove project virtualenv (inferred from current directory):
$ pipenv --rm
Install all dependencies for a project (including dev):
$ pipenv install --dev
Create a lockfile containing pre-releases:
$ pipenv lock --pre
Show a graph of your installed dependencies:
$ pipenv graph
Check your installed dependencies for security vulnerabilities:
$ pipenv check
Install a local setup.py into your virtual environment/Pipfile:
$ pipenv install -e .
Use a lower-level pip command:
$ pipenv run pip freeze
check Checks for PyUp Safety security vulnerabilities and against
PEP 508 markers provided in Pipfile.
clean Uninstalls all packages not specified in Pipfile.lock.
graph Displays currently-installed dependency graph information.
install Installs provided packages and adds them to Pipfile, or (if no
packages are given), installs all packages from Pipfile.
lock Generates Pipfile.lock.
open View a given module in your editor.
requirements Generate a requirements.txt from Pipfile.lock.
run Spawns a command installed into the virtualenv.
scripts Lists scripts in current environment config.
shell Spawns a shell within the virtualenv.
sync Installs all packages specified in Pipfile.lock.
uninstall Uninstalls a provided package and removes it from Pipfile.
update Runs lock, then sync.
upgrade Update the lock of the specified dependency / sub-dependency,
but does not actually install the packages.
verify Verify the hash in Pipfile.lock is up-to-date.
$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test
$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre
$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python
$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
Installing dependencies from Pipfile.lock...
...
To activate this project's virtualenv, run the following:
$ pipenv shell
Anda dapat menginstal paket dengan pipenv dari git dan sistem kontrol versi lainnya menggunakan URL yang diformat sesuai dengan aturan berikut:
<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
Satu-satunya bagian opsional adalah bagian @<branch_or_tag>
. Saat menggunakan git melalui SSH, Anda dapat menggunakan singkatan vcs dan alias skema git+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
. Perhatikan bahwa ini diterjemahkan ke git+ssh://git@<location>
saat diuraikan.
Nilai yang valid untuk <vcs_type>
mencakup git
, bzr
, svn
, dan hg
. Nilai yang valid untuk <scheme>
mencakup http,
, https
, ssh
, dan file
. Dalam kasus tertentu Anda juga memiliki akses ke skema lain: svn
dapat digabungkan dengan svn
sebagai skema, dan bzr
dapat digabungkan dengan sftp
dan lp
.
Perhatikan bahwa sangat disarankan agar Anda menginstal dependensi yang dikontrol versi dalam mode yang dapat diedit, menggunakan pipenv install -e
, untuk memastikan bahwa resolusi dependensi dapat dilakukan dengan salinan repositori terbaru setiap kali dilakukan, dan bahwa itu mencakup semua dependensi yang diketahui.
Di bawah ini adalah contoh penggunaan yang menginstal repositori git yang terletak di https://github.com/requests/requests.git
dari tag v2.19.1
sebagai requests
nama paket :
$ pipenv install -e git+https://github.com/requests/[email protected]#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/[email protected]#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/[email protected]#egg=requests to Pipfile's [packages]...
[...]
Anda dapat membaca lebih lanjut tentang implementasi dukungan vcs oleh pip di sini.
$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...
$ pipenv graph
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2017.7.27.1]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: >=2.5,<2.7, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev
$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
$ pipenv uninstall --all
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!
$ pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ ▯
Untuk memahami masalah yang dipecahkan Pipenv, ada gunanya menunjukkan bagaimana manajemen paket Python telah berkembang.
Bawa diri Anda kembali ke iterasi Python pertama. Kami memiliki Python, tetapi tidak ada cara yang bersih untuk menginstal paket.
Kemudian datanglah Easy Install, sebuah paket yang menginstal paket Python lainnya dengan relatif mudah. Namun ada kendalanya: tidak mudah untuk menghapus instalasi paket yang tidak diperlukan lagi.
Masukkan pip, yang sudah familiar bagi sebagian besar pengguna Python. pip memungkinkan kita menginstal dan menghapus paket. Kita dapat menentukan versi, menjalankan pip freeze > requiremen.txt untuk menampilkan daftar paket yang terinstal ke file teks, dan menggunakan file teks yang sama untuk menginstal semua yang dibutuhkan aplikasi dengan pip install -r requiremen.txt.
Tapi pip tidak menyertakan cara untuk mengisolasi paket satu sama lain. Kami mungkin mengerjakan aplikasi yang menggunakan versi berbeda dari perpustakaan yang sama, jadi kami memerlukan cara untuk mengaktifkannya.
Pipenv bertujuan untuk memecahkan beberapa masalah. Pertama, masalah kebutuhan perpustakaan pip untuk instalasi paket, ditambah perpustakaan untuk membuat lingkungan virtual, ditambah perpustakaan untuk mengelola lingkungan virtual, ditambah semua perintah yang terkait dengan perpustakaan tersebut. Banyak hal yang harus dikelola. Pipenv dikirimkan dengan manajemen paket dan dukungan lingkungan virtual, sehingga Anda dapat menggunakan satu alat untuk menginstal, menghapus instalasi, melacak, dan mendokumentasikan dependensi Anda dan untuk membuat, menggunakan, dan mengatur lingkungan virtual Anda. Saat Anda memulai proyek dengannya, Pipenv akan secara otomatis membuat lingkungan virtual untuk proyek tersebut jika Anda belum menggunakannya.
Pipenv menyelesaikan manajemen ketergantungan ini dengan mengabaikan norma persyaratan.txt dan menukarnya dengan dokumen baru yang disebut Pipfile. Saat Anda menginstal perpustakaan dengan Pipenv, Pipfile untuk proyek Anda secara otomatis diperbarui dengan detail instalasi tersebut, termasuk informasi versi dan mungkin lokasi repositori Git, jalur file, dan informasi lainnya.
Kedua, Pipenv ingin mempermudah pengelolaan saling ketergantungan yang kompleks.
Menggunakan Pipenv, yang memberi Anda Pipfile, memungkinkan Anda menghindari masalah ini dengan mengelola dependensi untuk lingkungan yang berbeda untuk Anda. Perintah ini akan menginstal dependensi proyek utama:
pemasangan pipenv
Menambahkan tag --dev akan menginstal persyaratan dev/testing:
pipenv install --dev Untuk menghasilkan file Pipfile.lock, jalankan:
kunci pipenv
Anda juga dapat menjalankan skrip Python dengan Pipenv. Untuk menjalankan skrip Python tingkat atas bernama hello.py, jalankan:
pipenv jalankan python hello.py
Dan Anda akan melihat hasil yang diharapkan di konsol.
Untuk memulai shell, jalankan:
cangkang pipenv
Jika Anda ingin mengonversi proyek yang saat ini menggunakan file persyaratan.txt untuk menggunakan Pipenv, instal Pipenv dan jalankan:
persyaratan pemasangan pipenv.txt
Ini akan membuat Pipfile dan menginstal persyaratan yang ditentukan.
Dokumentasi ada di pipenv.pypa.io.