2016-03-19 8 views
1

Ich versuche, ein runnable Skript für mein Projekt mit setup.py hinzuzufügen. Ich fügte es dem scripts= Argument von setup hinzu. Das Skript funktioniert einwandfrei, wenn ich es aus dem Projekt ./solver ausführen. Ich installiere es mit sudo python setup.py install, und versuche es mit solver, aber ich bekomme ImportError: No module named 'model'. Wie kann ich mein Skript mit setuptools korrekt installieren und ausführen?Skript installiert mit setup.py löst ImportError

SOLVER/ 
    solver/ 
     model/ 
      __init__.py 
     view/ 
      __init__.py 
     controller/ 
      __init__.py 
     __init__.py 
     main.py 
     solver <-- starts the app 
    setup.py 
    README.md 
    LICENCE 

setup.py:

#!/usr/bin/env python3 
import os 
from setuptools import setup, find_packages 

setup(
    name='SOLVER', 
    version='1.0.0', 
    description='SOLVER app test', 
    author=['me'], 
    license='BSD', 
    classifiers=['Programming Language :: Python :: 3 :: Only'], 
    packages=['solver'], 
    #packages=find_packages(exclude=["doc", "tests"]), 
    install_requires=['numpy>=1.10.4'], 
    scripts=['solver/solver'], 
) 

solver:

#!/usr/bin/env python3 

from solver import main 
main.gui_mode() 

Antwort

1

Sie benötigen alle Pakete aufzulisten, einschließlich der Unterpakete im packages Argument. Sie können find_packages verwenden, um diese Liste für Sie zu generieren. Derzeit installieren Sie nur die Python-Dateien im Verzeichnis solver/.

from setuptools import setup, find_packages 

setup(
    ... 
    packages=find_packages(), 
    ... 
) 

Sie auch entry_points statt scripts verwenden sollten, vor allem, wenn Sie alle Ihre Skript tut Import ist und eine Funktion aufrufen. Setuptools werden Skripte von den Einspeisepunkten bauen, die die richtige Python Binärdatei für die env sie in installiert wurden, verwenden.

setup(
    ... 
    packages=find_packages(), 
    entry_points={ 
     'console_scripts': [ 
      'solver=solver.main:gui_mode' 
     ] 
    ... 
    } 

Sie können Ihr Paket im Entwicklungsmodus installieren Ihr Skript zu bekommen, anstatt es selbst zu schreiben.

pip install -e . 

Sie sollten auch pip verwenden, um das System zu installieren. Es zeichnet auf, was installiert wurde, damit Sie es später deinstallieren können.

pip install . 
+0

Seltsam, 'installieren pip .' installiert alles in' python2.7' aus irgendeinem Grund, während es 'python3' sein sollte, weil ich für' 'python2.7' pip2' haben. – minerals

+0

Verwenden Sie dann 'pip3' oder' python3 -m pip'. Ich weiß nicht, wie Ihr System aussieht, also habe ich nur die allgemeinste Version verwendet. – davidism

+0

Auch ich bekomme immer noch Importfehler. 'File "/home/tastyminerals/dev/SOLVER/solver/view/main_controller.py", Zeile 18, in von model.pipeline import * Import: Kein Modul namens model.pipeline' Während ich weiß, dass' pipeline.py' existiert in 'model /' dir. – minerals

Verwandte Themen