2016-10-06 3 views
2

私はmyprojという名前のプロジェクトが

/myproj 
    __init__.py 
    module1.py 
    module2.py 
    setup.py 

setup.pyこの

from distutils.core import setup 

setup(name='myproj', 
     version='0.1', 
     description='Does projecty stuff', 
     author='Me', 
     author_email='[email protected]', 
     packages=['']) 

のように見えるが、これはmodule1.pyを置き、のような構造をしていますインストールディレクトリのmodule2.py


私が指定する方法setupように、そのディレクトリ/myprojとそれの内容のすべてをインストールしたディレクトリ内に落下していますか?このプロジェクトのためのあなたのmyprojルートディレクトリに

+0

他人に 'import myproj.module1'を使ってインポートさせたいのですか? – metatoaster

+1

'setup.py'はプロジェクトディレクトリ内にあってはなりません.... –

+0

@metatoasterはい。 – piRSquared

答えて

1

は、あなたはその下のmyprojという名前のディレクトリにmodule1.pymodule2.pyを移動したい、とあなたは、Python < 3.3の互換性を維持したい場合は、そこに__init__の.pyを追加します。

├── myproj 
│   ├── __init__.py 
│   ├── module1.py 
│   └── module2.py 
└── setup.py 

distutilsの代わりにsetuptoolsを使用することもできます。 setuptoolsでは、このファイルをもっと簡単に設定できるように、より多くのヘルパーメソッドと追加の属性を提供しています。あなたはこのような行が表示されるはずのインストールを実行する

from setuptools import setup, find_packages 

setup(name='myproj', 
     version='0.1', 
     description="My project", 
     author='me', 
     author_email='[email protected]', 
     packages=find_packages(), 
    ) 

:これは私が上記のプロジェクトのために構築します最低限setup.pyである。これは、セットアップスクリプトが必要なソースを拾ったことを意味

copying build/lib.linux-x86_64-2.7/myproj/__init__.py -> build/bdist.linux-x86_64/egg/myproj 
copying build/lib.linux-x86_64-2.7/myproj/module1.py -> build/bdist.linux-x86_64/egg/myproj 
copying build/lib.linux-x86_64-2.7/myproj/module2.py -> build/bdist.linux-x86_64/egg/myproj 

ファイル。 Pythonインタープリタを(好ましくはこのプロジェクトディレクトリの外に)実行して、それらのモジュールをインポートできるようにします(相対インポートのためではありません)。

一方、これらのモジュールをルートレベルで提供する場合は、明示的にpy_modulesを宣言する必要があります。

最後に、Python Packaging User Guideは、誰でも配布可能なpythonパッケージを構築するための具体的な質問のための優れたリソースです。

+0

' setup.py'でも 'packages = ['myproj']'が必要ですか? – piRSquared

+0

はい、実際は、答えを修正してください。 – metatoaster