Inhaltsverzeichnis
Nehmen wir an, wir müssen die Python -Anwendung oder -umgebung an unsere Benutzer verpacken, um "jederzeit auszuführen".
Nach einer Kombination aus gutem Nachdenken können wir uns eine virtuelle Umgebung (Python -m Venv venv_dir) erstellen, alle Inhalte in die virtuelle Umgebung installieren und dann den Ordner der virtuellen Umgebung an unsere Benutzer komprimieren und verteilen. Wir sind uns jedoch bewusst, dass der Ordner der virtuellen Umgebung den Weg, der sich von seiner Erstellungsposition unterscheidet, nicht leicht zu streichen. Darüber hinaus hängt unsere virtuelle Umgebung auch von der grundlegenden Python -Installation zum Erstellen ab (unter Verwendung derselben Python -Version unter diesem Pfad). Daher müssen wir unseren Benutzern sagen, wo sie eine Kopie der virtuellen Umgebung einstellen sollen. Und sie müssen eine bestimmte Version von Python unter einem bestimmten Weg installieren. Das wollen wir nicht.
Wir können alle Anforderungen in der konventionellen Python -Installation installieren und dann ihre Ordner (z. B. C: Programm Filespython 3.13.1) anstelle der virtuellen Umgebung komprimieren und verteilen. Dieses am effektivsten
Probleme mit PyInstaller
Lernen Sie das Python-Bundle kennen!
Erstellen Sie ein Bundle von Grund auf
Heim Backend-Entwicklung Python-Tutorial Tragbare Python -Bündel unter Windows

Tragbare Python -Bündel unter Windows

Jan 26, 2025 pm 08:17 PM

Verpacken Sie die Python -Anwendung und ihre Umgebung an MS Windows, damit andere Benutzer sie verwenden können, damit sie "jederzeit ausführen" kann, was eine schwierige Aufgabe ist. Dieser Blog -Artikel beschreibt meine persönliche Lösung: Ich nenne es die Windows -Version von Python Bundle , er ähnelt der virtuellen Umgebung, kann jedoch zwischen Maschinen transplantiert werden.

Python Bundle befindet sich in einer virtuellen Umgebung, einer konventionellen Python -Installation und einer unabhängigen ausführbaren Dateien, die von unabhängigen ausführbaren Dateien bereitgestellt werden, die von Tools wie PyInstaller oder PY2Exe erstellt wurden.

Erstellen eines solchen Bündels erfordert keine neuen Tools. Dies ist nur eine lockere und leichte Vereinbarung, für die Ordnerstruktur und einige Verpackungsskripte können Sie sie problemlos manuell erstellen. Oder automatisiert ihre Erstellung in Skripten oder CI -Operationen.

Portable Python Bundles on Windows

Frage

Nehmen wir an, wir müssen die Python -Anwendung oder -umgebung an unsere Benutzer verpacken, um "jederzeit auszuführen".

Wir wissen möglicherweise nicht, welche Version von Python, die wir installiert haben, oder es ist überhaupt nicht installiert. Wir wollen nie die Python -Installationen manipulieren, die sie möglicherweise bereits existieren, einschließlich nicht, dass sie nicht um die Installation zusätzlicher Python -Versionen bitten. Mit anderen Worten: Unser Softwarepaket sollte alles sein, was wir benötigen, um unsere Anwendung auszuführen oder unsere Python -Umgebung zu nutzen.

Das Problem der virtuellen Umgebung

Nach einer Kombination aus gutem Nachdenken können wir uns eine virtuelle Umgebung (Python -m Venv venv_dir) erstellen, alle Inhalte in die virtuelle Umgebung installieren und dann den Ordner der virtuellen Umgebung an unsere Benutzer komprimieren und verteilen. Wir sind uns jedoch bewusst, dass der Ordner der virtuellen Umgebung den Weg, der sich von seiner Erstellungsposition unterscheidet, nicht leicht zu streichen. Darüber hinaus hängt unsere virtuelle Umgebung auch von der grundlegenden Python -Installation zum Erstellen ab (unter Verwendung derselben Python -Version unter diesem Pfad). Daher müssen wir unseren Benutzern sagen, wo sie eine Kopie der virtuellen Umgebung einstellen sollen. Und sie müssen eine bestimmte Version von Python unter einem bestimmten Weg installieren. Das wollen wir nicht.

Python -Installationsproblem

Wir können alle Anforderungen in der konventionellen Python -Installation installieren und dann ihre Ordner (z. B. C: Programm Filespython 3.13.1) anstelle der virtuellen Umgebung komprimieren und verteilen. Dieses am effektivsten

. Das Python -Installationsverzeichnis unter Windows kann in der Regel verschiedene Pfade angeben (dies ist nicht der Fall, da das statische Präfixpfad auf dem UNIX -aber ein weiteres Thema ist).

Es gibt jedoch einen großen Defekt: Die Existenz des Skripts kann die Datei ausführen (die .exe -Datei im Verzeichnis. Eine ausführbare Datei kann ausgeführt werden. Diese Skripte können ausführen, die Dateien ausführen können, die von dem Python -Installationspfad abhängen, der in seinem "selbst" schwer codiert ist.

Probleme mit PyInstaller

Tools wie PyInstaller oder Py2exe können eine Python-Anwendung und alle ihre Abhängigkeiten in einem einzigen Paket bündeln. Benutzer müssen keinen Python-Interpreter oder andere Module installieren, um gepackte Anwendungen auszuführen.

Dies hat unsere Vertriebsanforderungen perfekt erfüllt. Der Nachteil besteht jedoch darin, dass wir keine vollständige Python-Umgebung, sondern ein benutzerdefiniertes, vereinfachtes Bundle-Format verteilen. Dies könnte das richtige Tool zum Verpacken Ihrer Anwendung sein. Dies gilt jedoch nicht, wenn wir unseren Benutzern beispielsweise ein „Starterkit“ einer Python-Umgebung senden möchten, die in einer IDE verwendet und mit zusätzlichen Pip-Installationen usw. erweitert werden kann. Wir suchen nach einer allgemeineren Lösung.

Lernen Sie das Python-Bundle kennen!

Erstellen Sie ein Bundle von Grund auf

Wir beginnen in Powershell mit der Erstellung eines Ordners für unser Bundle:

<code>mkdir bundle
cd bundle</code>
Nach dem Login kopieren
Nach dem Login kopieren

Dann fügen wir eine Python-Installation in python3 hinzu. In diesem Beispiel werde ich Python 3.13.1 aus seinem Nuget-Paket herunterladen und hinzufügen, das offiziell vom CPython-Projekt verwaltet wird und als „portable“ Kopie von Python verwendet werden kann. (In der Nuget-Zip-Datei befindet sich die Python-Installation im Tools-Verzeichnis. Das ist alles, was wir hier brauchen.)

<code>curl.exe -L "https://www.nuget.org/api/v2/package/python/3.13.1" -o python3.zip
Expand-Archive .\python3.zip -DestinationPath extracted_nuget
move .\extracted_nuget\tools python3
rm -R extracted_nuget
rm -R .\python3.zip</code>
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt sieht unser Bundle so aus:

<code>bundle
└───python3
    ├───python3.exe
    ├───Lib/
    ├───...</code>
Nach dem Login kopieren
Nach dem Login kopieren

Fügen wir auch ein Skriptverzeichnis hinzu:

<code>mkdir python3\Scripts</code>
Nach dem Login kopieren

Wir haben Pip noch nicht aktiviert, also machen wir das jetzt.

<code>python3\python.exe -m ensurepip</code>
Nach dem Login kopieren

Um das Problem zu lösen, dass pip .exe-Dateien im Skriptverzeichnis erstellt, die auf hartcodierten Python-Installationspfaden basieren, verwenden wir ein Wrapper-Skript für pip, das das Verhalten von pip korrigiert.

Lassen Sie uns eine Datei erstellen python_wrapperscriptspip.py:

<code>#!/usr/bin/python
import sys
import os

if __name__ == "__main__":
    from pip._vendor.distlib.scripts import ScriptMaker
    ScriptMaker.executable = r"python.exe"

    from pip._internal.cli.main import main
    sys.exit(main())</code>
Nach dem Login kopieren

Wie funktioniert es? Immer wenn wir ein Paket über unser Wrapper-Skript installieren (z. B. python3python.exe pip_wrapperscriptspip.py ), verweist jede .exe-Datei in python3Scripts einfach auf jede python.exe, die über die Umgebungsvariable PATH gefunden wurde, und verwendet diese (anstelle von python .exe unter einem hartcodierten Pfad wie c:\ProgrammePython 3.13.1python.exe).

Natürlich gibt es Risiken und Konsequenzen. Unsere Aufgabe besteht nun darin, sicherzustellen, dass, wenn jemand eine solche „gepatchte“ Scripts*.exe-Datei ausführt, die richtige python.exe in der PATH-Variablen enthalten ist. Aus diesem Grund muss unser Bundle vom Benutzer aktiviert werden, ähnlich wie in einer virtuellen Umgebung. Wir werden das später besprechen.

(Weitere Informationen zu dieser Kernverpackungsidee finden Sie hier)

Wäre es nicht schön, wenn wir auch eine pip.exe für unseren Pip-Wrapper hätten? Auf diese Weise können wir in Zukunft nur noch Pip-Befehle verwenden (und müssen nicht Python pip.py verwenden)? Lassen Sie uns eines erstellen. Natürlich muss es auch portabel sein, weshalb wir es auf ähnliche Weise erstellen werden.

Dazu erstellen wir einen pip_wrapperbin-Ordner und erstellen darin die .exe-Datei.

<code>mkdir bundle
cd bundle</code>
Nach dem Login kopieren
Nach dem Login kopieren

Dann verwenden wir Python3python.exe, um eine Python -Shell (repl) zu starten und den folgenden Code auszuführen, um PIP.Exe zu erstellen.

<code>curl.exe -L "https://www.nuget.org/api/v2/package/python/3.13.1" -o python3.zip
Expand-Archive .\python3.zip -DestinationPath extracted_nuget
move .\extracted_nuget\tools python3
rm -R extracted_nuget
rm -R .\python3.zip</code>
Nach dem Login kopieren
Nach dem Login kopieren

Unsere Ordnerstruktur sollte jetzt wie folgt angezeigt werden:

<code>bundle
└───python3
    ├───python3.exe
    ├───Lib/
    ├───...</code>
Nach dem Login kopieren
Nach dem Login kopieren

vergleiche

bla
**Bundle** **虚拟环境** **Python安装** **Pyinstaller**
**路径独立(可以复制到文件系统中的任何路径)?** 否 (Python安装路径硬编码在虚拟环境中) 否 (.\scripts\*.exe文件将中断)
**可以在同一系统上有多个实例** 没有问题 (概念是一个Python版本每个用户或系统一个Python安装)
**磁盘使用情况** 大 (包含完整的Python安装) 小 (依赖于Python安装) 中等
**需要激活**
**单个可执行文件**
**可以用作常规Python安装(REPL、pip、脚本等)**
**可以与IDE一起使用?** 是,但您可能需要在IDE的运行/调试配置文件中配置环境变量
Bitte beachten Sie, dass diese Ausgabe den Originaltext neu geschrieben hat, aber alle Informationen und Bilder des Originaltextes behält. Ich habe einen reibungsloseren Ausdruck verwendet und einige Absätze neu organisiert, um das Verständnis einfacher zu machen. Das Format des Bildes bleibt unverändert.

Das obige ist der detaillierte Inhalt vonTragbare Python -Bündel unter Windows. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1670
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
Python vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Apr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python vs. C: Erforschung von Leistung und Effizienz erforschen Python vs. C: Erforschung von Leistung und Effizienz erforschen Apr 18, 2025 am 12:20 AM

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Apr 18, 2025 am 12:22 AM

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python vs. C: Verständnis der wichtigsten Unterschiede Python vs. C: Verständnis der wichtigsten Unterschiede Apr 21, 2025 am 12:18 AM

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.

Welches ist Teil der Python Standard Library: Listen oder Arrays? Welches ist Teil der Python Standard Library: Listen oder Arrays? Apr 27, 2025 am 12:03 AM

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python für die Webentwicklung: Schlüsselanwendungen Python für die Webentwicklung: Schlüsselanwendungen Apr 18, 2025 am 12:20 AM

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code

See all articles