2010-04-20 9 views
18

Ho bisogno di eseguire uno script Python su una macchina che non ha Python installato. Io uso Python come parte di un pacchetto software, e Python corre dietro le quinte senza che l'utente se ne accorga.Installa Python 2.6 senza utilizzare il programma di installazione su Win32

Quello che ho fatto è stato il seguente.

  1. Copia python.exe, python26.dll, msvcr90.dll e Microsoft.VC90.CRT.manifest
  2. Zip tutte le directory nella directory LIBS come python26.zip
  3. copiare tutte le dll necessaria/file pyd all'interno della directory DLL.

Sembra funzionare, ma quando cambio python26.zip nell'altro nome come pythonlib.zip, non riesce più a trovare la libreria Python.

  • Domanda 1: Qual è la magia dietro il nome python26.zip? Python trova automaticamente una libreria all'interno di python26.zip, ma non con un nome diverso?
  • Domanda 2: Se ho python26.zip nella stessa directory in cui python.exe/python26.dll è, non è necessario aggiungere il percorso sys.path.append (IL PERCORSO A python26.zip). È corretto?

Python ha librerie incorporate e sys è uno di questi. Ho pensato che potrei usare sys.path per puntare a qualsiasi libreria Python nel file ZIP di cui avevo bisogno. Ma, sorprendentemente, se uso il nome della libreria come Python26.zip, ha funzionato. Perché è così?

+2

Nessun privilegio di amministratore? –

+2

Attenzione all'installazione manuale di Python. Probabilmente lo farai funzionare bene, ma l'installazione di eventuali librerie aggiuntive è un grave problema nel posteriore. – ktdrv

+1

puoi semplicemente impacchettare la tua app usando py2exe? (includerà una copia dell'interprete all'interno di un exe) –

risposta

10

Ho esaminato il codice sorgente dell'interprete Python e ho fatto alcuni esperimenti. E ho scoperto che l'interprete Python anteporre "THE DIRECTORY OF PYTHONXXX.DLL + pythonXXX.zip" non importa cosa. XXX è la versione dell'interprete Python.

Di conseguenza, se c'è un python26.zip nella stessa directory di python26.dll. Potrei usare tutta la libreria Python automaticamente.

26

Ho utilizzato PortablePython per un anno ora, e lo trovo eccezionale perché funziona sul mio blocco note di lavoro bloccato.

C'è un Python 2.5.4, 2.6.1 e una versione 3.0.1.

+1

Non avevo mai sentito parlare di PortablePython. Ottimo consiglio. – Frederik

+0

puoi aggiungere moduli aggiuntivi all'USB contenente PP, quindi niente ti impedisce di utilizzarlo rispetto alla copia che stai facendo ora – PPTim

+0

ummmm gli utenti possono essere abbastanza oblivati ​​a quello che succede intorno a loro, ma non noterebbero l'unità USB ? –

2

py2exe consente di compilare lo script Python in un file eseguibile di Windows. Potrebbe non funzionare meglio di PortablePython, ma forse potrebbe essere un po 'più pulito per quanto riguarda il numero di file che devi distribuire per il tuo programma "dietro le quinte".

3

Un'altra opzione potrebbe essere quella di considerare PyInstaller che creerà applicazioni Python stand-alone multipiattaforma. Dalla home page:

PyInstaller è un programma che converte (pacchetti) programmi Python in eseguibili stand-alone, in ambiente Windows, Linux e Mac OS X. [...] L'obiettivo principale di PyInstaller è quello di essere compatibile con pacchetti di terze parti pronti all'uso. Ciò significa che, con PyInstaller, tutti i trucchi necessari per far funzionare i pacchetti esterni sono già integrati all'interno di PyInstaller in modo che non sia richiesto alcun intervento da parte dell'utente. Non ti verrà mai richiesto di cercare trucchi in wiki e applicare modifiche personalizzate ai tuoi file o ai tuoi script di configurazione. Ad esempio, le librerie come PyQt e Matplotlib sono completamente supportate, senza dover gestire manualmente plug-in o file di dati esterni. Controlla la nostra lista di compatibilità di SupportedPackages.

+0

PyInstaller non supporta Windows con Python2.6. È un blocco per me e potrebbe essere anche per gli altri. http://www.pyinstaller.org/wiki/Python26Win – blokeley

5

Un'altra opzione è l'installazione di WinPython. Utilizza un programma di installazione, ma non richiede diritti di amministratore (testato su Windows 7). A differenza di Portable Python, ha anche una versione di Python 3.3.5.

10

Da Sylvain Pointeau's blog:

La procedura è in realtà molto semplice, basta scaricare l'installer msi da http://www.python.org/getit/ e digitare il comando:

C:\development\apps>msiexec /a python-3.3.2.msi /qb TARGETDIR=C:\development\apps\python33

suo esempio utilizza msiexec (aka MSI Administrative Installer for you UniExtract people) per forzare un estratto su TARGETDIR. Noterai che è un programma di installazione interno che elimini.

EDIT: Anche tu puoi renderlo silenzioso, ma farlo ogni volta che vuoi usare python sembra stupido. Basta estrarre su un tempdir e poi pulire quando lo disinstallano.

PS: Non ho visto quanti anni aveva! : D

+1

Ho dovuto fare di recente simili con 2.7.11. Inoltre, dovrai installare pip manualmente (usando lo script 'get-pip.py'). – Erik

Problemi correlati