2016-03-19 6 views
1

プロジェクトの実行可能スクリプトをsetup.pyで追加しようとしています。私はscripts=の引数にsetupという文字列を追加しました。スクリプトは、プロジェクトから実行するとうまく動作します。./solver私はsudo python setup.py installとそれをインストールし、solverとそれを実行しようとするが、私はImportError: No module named 'model'を得る。 setuptoolsでスクリプトを正しくインストールして実行するにはどうすればよいですか?setup.pyでスクリプトをインストールすると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:あなたはpackages引数に、サブパッケージを含むすべてのパッケージを一覧表示する必要が

#!/usr/bin/env python3 

from solver import main 
main.gui_mode() 

答えて

1

find_packagesを使用してそのリストを生成することができます。現在のところ、Pythonファイルをsolver/ディレクトリにインストールするだけです。

from setuptools import setup, find_packages 

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

また、あなたのスクリプトが行うすべて1つの関数をインポートして呼び出す場合は特に、entry_pointsではなくscriptsを使用する必要があります。 setuptoolsのは、彼らが中に設置されたENVの正しいPythonのバイナリを使用してエントリポイントからスクリプトを作成します。

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

あなたはむしろそれを自分で書くよりも、あなたのスクリプトを取得するために開発モードでパッケージをインストールすることができます。

pip install -e . 

システムにも同様にインストールするには、pipを使用する必要があります。インストールされたものを追跡して、後でアンインストールできます。

pip install . 
+0

Strange、 'pip install .'何らかの理由で' python2.7'にすべてをインストールしますが、 'python2.7'に' pip2'があるので 'python3'にする必要があります。 – minerals

+0

そして、 'pip3'または' python3 -m pip'を使います。私はあなたのシステムがどのように見えるのかわからないので、私は最も一般的なバージョンを置くだけです。 – davidism

+0

また、私はまだインポートエラーが発生します。 'model.pipelineインポート* はImportErrorから でファイル "/home/tastyminerals/dev/SOLVER/solver/view/main_controller.py"、18行目、:いいえモジュールの名前model.pipeline' 私がことを知っていますが' pipeline.py'は 'model /'ディレクトリに存在します。 – minerals

関連する問題