2015-02-17 46 views
1

我有會(簡體)結構的包看起來像:如何使Python setuptools的發現頂層模塊

mypackage/ 
    __init__.py 
    setup.py 
    module1.py 
    module2.py 
    mysubpackage/ 
     __init__.py 
     mysubmodule1.py 
     mysubmodule2.py 

我使用的是配置setup.py是這樣的:

from setuptools import setup, find_packages 

setup(
    name = "mypackage", 
    version = "0.1", 
    author = "Foo", 
    author_email = "[email protected]", 
    description = ("My description"), 
    packages=find_packages(), 
) 

find_packages()的默認where參數是'.',但它不包含我的頂級模塊(module1.py和module2.py)。但是,運行python setup.py build時會添加所有子子模塊和子包。

我怎樣才能獲得頂級Python模塊,而無需將setup.py提高一級?

+3

爲什麼你不想移動'setup.py'?它應該在包裹外面。 – jonrsharpe 2015-02-17 23:17:00

+0

公平地說,'setup.py'應該向上移動一級,並且需要通過正確配置'setup.py'來安裝所有其他腳本/包/模塊。應該是這樣的。 – 2015-02-17 23:17:22

+0

'mypackage'實際上是一個django應用程序,我希望在應用程序內部有setup.py以將其提交到應用程序的源代碼中,並避免將它放在我的django項目中。 – Caumons 2015-02-17 23:18:43

回答

1

謝謝大家的回覆。

最後,我添加了一個包含mypackage和setup.py模塊的目錄(不是Python包)。結構現在看起來如下:

myapp/ 
    setup.py 
    mypackage/ 
     __init__.py 
     module1.py 
     module2.py 
     mysubpackage/ 
      __init__.py 
      mysubmodule1.py 
      mysubmodule2.py 

現在使用find_packages()按預期工作。謝謝!