Python setuptools develop命令:"没有命名的模块......"

时间:2014-04-07 22:21:48

标签: python setuptools

我正在尝试安装我使用setuptools的develop命令开发的python包。

[旁注:网上有大量关于此事的信息(distutils,distutils2,setuptools,distribution)。据我所知,setuptools和develop是使用开发中的一段代码的最现代/最佳实践方法。也许我错了。]

这就是我的所作所为:

(1)我用我的Python代码在目录中放置了一个空__init__.py。

(2)我做了一个setup.py:

from setuptools import setup, find_packages
setup(name = "STEM_pytools",
      version = "0.1",
      packages = find_packages(),

      author = "Timothy W. Hilton",
      author_email = "my@email.address",
      description = "visualization and data pre-/post-processing tools for STEM",
      license = "",
      keywords = "STEM",
      url = "")

(3)我跑了

python setup.py develop

这似乎没有问题。

然而,当我尝试使用该包时,我得到:

>>> import STEM_pytools
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named STEM_pytools

安装命令也会发生同样的事情:它的输出看起来没问题,然后&#34;没有名为STEM_pytools&#34;的模块。我把头发撕掉了。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,虽然我仍然不完全理解为什么它现在有效并且之前没有用。看来我的setup.py和我的项目的目录结构没有成功交互。

这是使用我的setup.py:

的目录结构
STEMpytools/
    setup.py
    stem_pytools/
        __init__.py
        source1.py
        source2.py
        ...
        sourceN.py

这个目录结构不起作用,至少在与我的setup.py:

配对时
STEMpytools/
    setup.py
    __init__.py
    source1.py
    source2.py
    ...
    sourceN.py

这个解释给了我很多帮助:http://bashelton.com/2009/04/setuptools-tutorial/
现在,从python解释器,这两者都有效:

import stem_pytools
import stem_pytools.source1

在我的系统上进行试验表明,有必要将__init__.py和包源代码放在包含setup.py的根目录下一级的子目录中。我不确定setuptools和distutils文档为何会出现这种情况。