2012-02-07 19 views
4

私はsetup.pyのドキュメントを見てきましたが、私はかなり基本的なはずの感じではまだいくつかの問題があります。setup.pyとpythonプロジェクトをインストール

私は私が実行して取得しようとしている簡単な例プロジェクトにこれを分解しました、以下のように、私のプロジェクトのディレクトリ構成は次のとおりです。

myproject 
    setup.py 
    src\ 
    main.py 
     extern\ 
     __init__.py 
     mytest.py 

でmyproject/setup.py:

#!/usr/bin/env python 
from distutils.core import setup 

setup(name = "myproject", 
     package_dir = {'':"src"}, 
     packages = ["extern"], 
     scripts = ["src/main.py"], 
    ) 

でmyproject/srcに/ main.py:

#! /usr/bin/env python 
import extern.mytest as mytest 

mytest.print_test() 

でmyproject/srcに/のextern/mytest.py:

#!/usr/bin/env python 
def print_test(): 
    print "YAY" 

でmyproject/srcに/のextern/_ のinit _.pyは空白です。 setup.pyがエラーなしで完了し、〜/ local/binのにmain.pyを移動します

setup.py install --prefix ~/local 

私はそれを実行したときしかし、私は次のエラーを取得する:として

私はsetup.pyを実行していますよ:

ImportError: No module named extern.mytest 

私は間違っていると思いますか?ありがとう!

答えて

7

問題はモジュールがsys.pathの下になく、それがimportステートメントで見つからないということです。

私の場合、externモジュールは~/local/lib/python2.7/site-packages/externの下にインストールされていました。ただし、インストール時にインストールパスは任意に~/localに設定されています。

これを修正するには、モジュールがインストールされている場所にPYTHONPATH変数を設定するか、sys.pathにそのパスをmain.pyに追加します。また

、代わりに:

setup.py install --prefix ~/local 

使用:

setup.py install --user 

これは、ユーザーのサイトのパッケージディレクトリに(私のプラットフォームで~/.local)をインストールし、Pythonはせずにパッケージを見つけることができるようになります何の問題。しかし、~/.local/binを含むように環境変数PATHを変更する必要があるでしょう。

+0

@jcolladoのように、Pythonディストリビューションの 'site-packages'ディレクトリにインストールすると、権限エラーによってブロックされますか? – Droogans

+0

ありがとう、私は投稿した後に--userオプションを見つけましたが、site.USER_SITEのデフォルトを〜/ .localにするのはうんざりしていました。私は物事をローカルにインストールする方法とは別のものを使うべきか、これは私が受け入れるべきものなのでしょうか? –

+0

./setup。py install --home〜/ local が動作しているようです。 –

関連する問題