Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Python] Come gestire le dipendenze esterne

    ciao!

    ho fatto un piccolo programmino in python, che richiede alcune librerie esterne.
    ovviamente sul mio pc funziona tutto, è lo stesso in cui sviluppo e ho anche installato la libreria esterna.
    ma se provo ad usare il programma su un altro pc, ovviamente da errore.
    a meno che non installi anche la libreria tramite pip.
    ovviamente è improbabile poter installare la libreria su tutti i pc.
    e non tutti sono in grado di farlo da soli.
    in questi casi come si fa???

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Usa distutils per distribuire il tuo codice Ad esempio https://www.digitalocean.com/communi...n-applications

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Usa distutils per distribuire il tuo codice Ad esempio https://www.digitalocean.com/communi...n-applications
    ciao!
    mi sto leggendo un pò di documentazione in giro.
    tipo anche questo link:https://wiki.python.org/moin/Distutils/Tutorial
    o quello trovato sulla documentazione ufficiale python.
    oltre al tuo.

    ma sinceramente ci sono cose che non capisco granchè.
    allora, tutto il codice è dentro ad un package.
    a livello di root del progetto ho creato il file setup.py:
    codice:
    from distutils.core import setup
    
    setup(
        name='MPImageResize',
        version='',
        packages=['', 'resize'],
        url='',
        license='',
        author='',
        author_email='',
        description=''
    )
    a questo punto è qua che gli devo dire di includere anche librerie esterne (in questo caso pillow)?

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    No, guarda la pagina che ti ho linkato. Nel file setup c'è una voce che dice
    codice:
    # Dependent packages (distributions)
        install_requires=[
            "flask",
        ],
    Devi metterli qui, che io sappia

  5. #5
    ok, questo il file:
    codice:
    from distutils.core import setup
    
    setup(
        name='MPImageResize',
        version='',
        packages=['resize'],
        url='',
        license='',
        author='',
        author_email='',
        description='',
        install_requires=['PIL']
    )
    dopo di che ho lanciato questo comando:
    codice:
    $ python setup.py sdist
    /usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'install_requires'
      warnings.warn(msg)
    running sdist
    running check
    warning: check: missing required meta-data: version, url
    
    warning: check: missing meta-data: if 'author' supplied, 'author_email' must be supplied too
    
    warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)
    
    warning: sdist: standard file not found: should have one of README, README.txt
    
    writing manifest file 'MANIFEST'
    creating MPImageResize-0.0.0
    creating MPImageResize-0.0.0/resize
    making hard links in MPImageResize-0.0.0...
    hard linking setup.py -> MPImageResize-0.0.0
    hard linking resize/__init__.py -> MPImageResize-0.0.0/resize
    hard linking resize/main.py -> MPImageResize-0.0.0/resize
    hard linking resize/resizeimage.py -> MPImageResize-0.0.0/resize
    creating dist
    Creating tar archive
    removing 'MPImageResize-0.0.0' (and everything under it)
    per evitare l'errore ho fatto una modifica alla prima riga:
    codice:
    from setuptools import setup
    
    setup(
        name='MPImageResize',
        version='',
        packages=['resize'],
        url='',
        license='',
        author='Mattepuffo',
        author_email='',
        description='',
        install_requires=['PIL']
    )
    e rilanciato il comando:
    codice:
    $ python setup.py sdist
    /usr/lib/python3.5/site-packages/setuptools/dist.py:342: UserWarning: The version specified ('') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
      "details." % self.metadata.version
    running sdist
    running egg_info
    creating MPImageResize.egg-info
    writing dependency_links to MPImageResize.egg-info/dependency_links.txt
    writing top-level names to MPImageResize.egg-info/top_level.txt
    writing MPImageResize.egg-info/PKG-INFO
    writing requirements to MPImageResize.egg-info/requires.txt
    writing manifest file 'MPImageResize.egg-info/SOURCES.txt'
    reading manifest file 'MPImageResize.egg-info/SOURCES.txt'
    writing manifest file 'MPImageResize.egg-info/SOURCES.txt'
    warning: sdist: standard file not found: should have one of README, README.rst, README.txt
    
    running check
    warning: check: missing required meta-data: url
    
    warning: check: missing meta-data: if 'author' supplied, 'author_email' must be supplied too
    
    creating MPImageResize-0.0.0
    creating MPImageResize-0.0.0/MPImageResize.egg-info
    creating MPImageResize-0.0.0/resize
    copying files to MPImageResize-0.0.0...
    copying setup.py -> MPImageResize-0.0.0
    copying MPImageResize.egg-info/PKG-INFO -> MPImageResize-0.0.0/MPImageResize.egg-info
    copying MPImageResize.egg-info/SOURCES.txt -> MPImageResize-0.0.0/MPImageResize.egg-info
    copying MPImageResize.egg-info/dependency_links.txt -> MPImageResize-0.0.0/MPImageResize.egg-info
    copying MPImageResize.egg-info/requires.txt -> MPImageResize-0.0.0/MPImageResize.egg-info
    copying MPImageResize.egg-info/top_level.txt -> MPImageResize-0.0.0/MPImageResize.egg-info
    copying resize/__init__.py -> MPImageResize-0.0.0/resize
    copying resize/main.py -> MPImageResize-0.0.0/resize
    copying resize/resizeimage.py -> MPImageResize-0.0.0/resize
    Writing MPImageResize-0.0.0/setup.cfg
    creating dist
    Creating tar archive
    removing 'MPImageResize-0.0.0' (and everything under it)
    è stato creato un file tar.gz, con dentro il programma.
    ma la libreria non c'è.
    è giusto??

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    trasferisci il tar.gz, spacchetti e poi dai python setup.py install

    se, invece, vuoi qualcosa tipo un eseguibile, puoi usare altri metodi per creare un exe che avvia il tuo codice (py2exe, ad esempio)

  7. #7
    Quote Originariamente inviata da clasku Visualizza il messaggio
    trasferisci il tar.gz, spacchetti e poi dai python setup.py install

    se, invece, vuoi qualcosa tipo un eseguibile, puoi usare altri metodi per creare un exe che avvia il tuo codice (py2exe, ad esempio)
    ciao!
    allora, in verità ho una marea di problemi.
    non so se è proprio pillow che è problematico.

    prima di tutto il comando di installazione devo lanciarlo con privilegi elevati, sennò mi da errore:
    codice:
    $ sudo python3 setup.py install
    ma fin qui diciamo poco male.

    poi, sul sistema dove sto facendo i test (quindi non quello di sviluppo) ho dovuto installare questi pacchetti (seguendo gli errori che uscivano fuori):
    - libjpeg-turb
    - zlib
    - gcc
    - python3-devel
    e quindi sto di nuovo al punto di partenza, in quanto devo installare delle dipendenze a livello di sistema.
    e non penso di poter mettere queste dipendenze nel file di setup (anche perchè i pacchetti si chiamano in maniera differente tra le varie distro).

    arrivato a questo punto, il processo è terminato.
    ho testato il programma e funziona bene.
    però, per questo tipo di dipendenze, c'è un rimedio??

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma quelle sono dipendenze di sistema, compilazione (gcc), strumenti di python per la compilazione (*-devel) ecc
    non credo che tu possa fare nulla, è un po' come installare un software su linux...
    a meno che non compili il tuo codice come software (che ne so, un .deb o analogo per sistemi non Debian-based), ma qui mi fermo perché non saprei neppure da dove iniziare

  9. #9
    Quote Originariamente inviata da clasku Visualizza il messaggio
    ma quelle sono dipendenze di sistema, compilazione (gcc), strumenti di python per la compilazione (*-devel) ecc
    non credo che tu possa fare nulla, è un po' come installare un software su linux...
    a meno che non compili il tuo codice come software (che ne so, un .deb o analogo per sistemi non Debian-based), ma qui mi fermo perché non saprei neppure da dove iniziare
    eh si immaginavo.
    volevo solo conferma di aver fatto tutto corretto.
    in questo caso metterò le dipendenze richieste nel MANIFEST, in modo che l'utente possa installarsele da sole.

    grazie!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.