Pipenv ist ein Python-Virtualenv-Verwaltungstool, das eine Vielzahl von Systemen unterstützt und die Lücken zwischen Pip, Python (unter Verwendung von Systempython, Pyenv oder ASDF) und Virtualenv gut schließt. Linux, macOS und Windows sind allesamt erstklassige Bürger in Pipenv.
Pipenv erstellt und verwaltet automatisch eine virtuelle Umgebung für Ihre Projekte und fügt Pakete zu Ihrer Pipfile
hinzu bzw. entfernt diese, während Sie Pakete installieren/deinstallieren. Außerdem wird ein Projekt Pipfile.lock
generiert, das zur Erstellung deterministischer Builds verwendet wird.
Pipenv soll in erster Linie Benutzern und Entwicklern von Anwendungen eine einfache Möglichkeit bieten, zu einer konsistenten Arbeitsumgebung für Projekte zu gelangen.
Die Probleme, die Pipenv lösen möchte, sind vielfältig:
pip
und virtualenv
nicht mehr separat verwenden: Sie arbeiten zusammen.requirements.txt
-Datei mit Paket-Hashes kann problematisch sein. Pipenv verwendet Pipfile
und Pipfile.lock
um abstrakte Abhängigkeitsdeklarationen von der zuletzt getesteten Kombination zu trennen.$ pipenv graph
)..env
Dateien unterstützen. Pipenv
Installation
Merkmale
Grundkonzepte
Andere Befehle
Shell-Fertigstellung
Verwendung
Anwendungsbeispiele
Befehle
Suchen Sie das Projekt
Suchen Sie die virtuelle Umgebung
Suchen Sie den Python-Interpreter
Pakete installieren
Installation von Git
Installieren Sie eine Entwicklungsabhängigkeit
Zeigen Sie ein Abhängigkeitsdiagramm an
Erzeugen Sie eine Sperrdatei
Installieren Sie alle Entwicklungsabhängigkeiten
Alles deinstallieren
Benutze die Muschel
Dokumentation
Pipenv kann mit Python 3.7 und höher installiert werden.
Für die meisten Benutzer empfehlen wir die Installation von Pipenv mit pip
:
pip install --user pipenv
Oder, wenn Sie FreeBSD verwenden:
pkg install py39-pipenv
Oder, wenn Sie Gentoo verwenden:
sudo emerge pipenv
Oder, wenn Sie Void Linux verwenden:
sudo xbps-install -S python3-pipenv
Alternativ bevorzugen einige Benutzer die Verwendung von Pipx:
pipx install pipenv
Oder einige Benutzer bevorzugen die Verwendung des Python-Pip-Moduls
python -m pip install pipenv
Aktuelle Anweisungen finden Sie in der Dokumentation.
?
pyenv
oder asdf
verfügbar ist.Pipfile
sucht.Pipfile
, falls noch keine vorhanden ist.Pipfile
hinzu bzw. entfernt sie, wenn sie installiert/deinstalliert werden..env
Dateien, sofern vorhanden.Eine Befehlsreferenz finden Sie unter Befehle.
install
übergeben werden, werden alle angegebenen Pakete [packages]
installiert. Um die Vervollständigung in Fish zu aktivieren, fügen Sie Folgendes zu Ihrer Konfiguration hinzu ~/.config/fish/completions/pipenv.fish
:
eval (env _PIPENV_COMPLETE=fish_source pipenv)
Es gibt auch ein Fisch-Plugin, das Ihre Subshells automatisch für Sie aktiviert!
Alternativ können Sie mit zsh Folgendes zu Ihrer Konfiguration hinzufügen ~/.zshrc
:
eval "$(_PIPENV_COMPLETE=zsh_source pipenv)"
Alternativ können Sie dies mit Bash zu Ihrer Konfiguration hinzufügen ~/.bashrc
oder ~/.bash_profile
:
eval "$(_PIPENV_COMPLETE=bash_source pipenv)"
Magische Shell-Vervollständigungen sind jetzt aktiviert!
$ 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
Sie können Pakete mit Pipenv von Git und anderen Versionskontrollsystemen installieren, indem Sie URLs verwenden, die gemäß der folgenden Regel formatiert sind:
<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
Der einzige optionale Abschnitt ist der Abschnitt @<branch_or_tag>
. Wenn Sie Git über SSH verwenden, können Sie die Abkürzung vcs und den Schema-Alias git+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
verwenden. Beachten Sie, dass dies beim Parsen in git+ssh://git@<location>
übersetzt wird.
Zu den gültigen Werten für <vcs_type>
gehören git
, bzr
, svn
und hg
. Zu den gültigen Werten für <scheme>
gehören http,
, https
, ssh
und file
. In bestimmten Fällen haben Sie auch Zugriff auf andere Schemata: svn
kann mit svn
als Schema kombiniert werden, und bzr
kann mit sftp
und lp
kombiniert werden.
Beachten Sie, dass dringend empfohlen wird, alle versionierten Abhängigkeiten im bearbeitbaren Modus mit pipenv install -e
zu installieren, um sicherzustellen, dass die Abhängigkeitsauflösung jedes Mal mit einer aktuellen Kopie des Repositorys durchgeführt werden kann dass es alle bekannten Abhängigkeiten enthält.
Unten sehen Sie ein Beispiel für die Verwendung, bei der das Git-Repository unter https://github.com/requests/requests.git
ab Tag v2.19.1
als requests
installiert wird:
$ 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]...
[...]
Weitere Informationen zur Implementierung der VCS-Unterstützung durch pip finden Sie hier.
$ 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.
$ ▯
Um die Probleme zu verstehen, die Pipenv löst, ist es hilfreich zu zeigen, wie sich die Python-Paketverwaltung entwickelt hat.
Kehren Sie zur ersten Python-Iteration zurück. Wir hatten Python, aber es gab keine saubere Möglichkeit, Pakete zu installieren.
Dann kam Easy Install, ein Paket, das andere Python-Pakete relativ einfach installiert. Allerdings gab es einen Haken: Es war nicht einfach, nicht mehr benötigte Pakete zu deinstallieren.
Geben Sie pip ein, was den meisten Python-Benutzern bekannt ist. Mit pip können wir Pakete installieren und deinstallieren. Wir könnten Versionen angeben, pip freeze > require.txt ausführen, um eine Liste der installierten Pakete in einer Textdatei auszugeben, und dieselbe Textdatei verwenden, um mit pip install -r require.txt alles zu installieren, was eine App benötigt.
Pip enthielt jedoch keine Möglichkeit, Pakete voneinander zu isolieren. Wir arbeiten möglicherweise an Apps, die unterschiedliche Versionen derselben Bibliotheken verwenden, also brauchten wir eine Möglichkeit, dies zu ermöglichen.
Pipenv zielt darauf ab, mehrere Probleme zu lösen. Erstens das Problem, dass die pip-Bibliothek für die Paketinstallation sowie eine Bibliothek zum Erstellen einer virtuellen Umgebung und eine Bibliothek zum Verwalten virtueller Umgebungen sowie alle mit diesen Bibliotheken verbundenen Befehle benötigt werden. Das ist eine Menge zu bewältigen. Pipenv wird mit Paketverwaltung und Unterstützung für virtuelle Umgebungen geliefert, sodass Sie mit einem Tool Ihre Abhängigkeiten installieren, deinstallieren, verfolgen und dokumentieren sowie Ihre virtuellen Umgebungen erstellen, verwenden und organisieren können. Wenn Sie damit ein Projekt starten, erstellt Pipenv automatisch eine virtuelle Umgebung für dieses Projekt, sofern Sie noch keine verwenden.
Pipenv erreicht dieses Abhängigkeitsmanagement, indem es die Anforderungs.txt-Norm aufgibt und sie gegen ein neues Dokument namens Pipfile eintauscht. Wenn Sie eine Bibliothek mit Pipenv installieren, wird eine Pipfile für Ihr Projekt automatisch mit den Details dieser Installation aktualisiert, einschließlich Versionsinformationen und möglicherweise dem Speicherort des Git-Repositorys, dem Dateipfad und anderen Informationen.
Zweitens möchte Pipenv die Verwaltung komplexer Abhängigkeiten erleichtern.
Mit Pipenv, das Ihnen Pipfile zur Verfügung stellt, können Sie diese Probleme vermeiden, indem Sie Abhängigkeiten für verschiedene Umgebungen für Sie verwalten. Dieser Befehl installiert die Hauptprojektabhängigkeiten:
Pipenv installieren
Durch das Hinzufügen des Tags --dev werden die Entwicklungs-/Testanforderungen installiert:
pipenv install --dev Um eine Pipfile.lock-Datei zu generieren, führen Sie Folgendes aus:
Pipenv-Sperre
Sie können mit Pipenv auch Python-Skripte ausführen. Führen Sie Folgendes aus, um ein Python-Skript der obersten Ebene namens hello.py auszuführen:
Pipenv führt Python hello.py aus
Und Sie werden Ihr erwartetes Ergebnis in der Konsole sehen.
Um eine Shell zu starten, führen Sie Folgendes aus:
Pipenv-Shell
Wenn Sie ein Projekt, das derzeit eine Datei „requirements.txt“ verwendet, für die Verwendung von Pipenv konvertieren möchten, installieren Sie Pipenv und führen Sie Folgendes aus:
Pipenv-Installationsanforderungen.txt
Dadurch wird eine Pipfile erstellt und die angegebenen Anforderungen installiert.
Die Dokumentation befindet sich unter pipenv.pypa.io.