【问题标题】:Python setuptools develop command: "No module named..."Python setuptools 开发命令:“没有名为...的模块”
【发布时间】:2014-05-20 09:22:52
【问题描述】:

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

[旁注:网络上有大量关于此的信息(distutils、distutils2、setuptools、distribute)。据我所知,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

安装命令也会发生同样的事情:它的输出看起来不错,然后是“没有名为 STEM_pytools 的模块”。我在扯头发。任何建议表示赞赏!

【问题讨论】:

  • 这个包在你的pythonXX文件夹里吗?
  • 包源代码在别处。运行 setup.py develop 将“STEM-pytools.egg-link”放在我的 python2.7/site-packages 文件夹中。我阅读文档的理解是,这就是所有需要发生的事情。我需要做进一步的事情吗?
  • 也许你调用的是包名,而不是模块名。如果文件夹也是STEM_pytools,试试import STEM_pytools.STEM_pytools

标签: python setuptools


【解决方案1】:

我解决了这个问题,虽然我仍然不完全明白为什么它现在可以工作而以前没有工作。看来我的 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 文档中我不确定为什么会这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2020-02-24
    • 2014-04-27
    • 2017-11-12
    • 2022-11-10
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多