Python setuptools 开发命令 : "No module named..."

标签 python setuptools

我正在尝试安装我使用 setuptools 的 develop 命令开发的 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

安装命令也会发生同样的事情:它的输出看起来没问题,然后是“No module named STEM_pytools”。我正在撕扯我的头发。任何建议表示赞赏!

最佳答案

我解决了这个问题,尽管我仍然不完全理解为什么它现在可以工作而以前没有工作。似乎我的 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 文档为什么会这样。

关于Python setuptools 开发命令 : "No module named...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924189/

相关文章:

python - 为我的 python 项目创建 setup.py,下载依赖包时出现问题

python - ForeignKey 小部件的 Django 可搜索下拉菜单

python - Flask 和减少 mysql 查询的最佳方法,也许是 celery?

python - 处理太大而无法存储在内存中的文件?

python - 在多个 pandas 数据帧上应用相同的函数来获取数据帧

python - 导入错误: No module named 'pkg_resources.extern.six.moves' ; 'pkg_resources.extern.six' is not a package

python - 使用 distutils/setuptools 配置扩展模块

python - 如何在运行 local-scheduler 时创建 Luigi 依赖关系图

python - 如何覆盖 setup.py 默认使用的编译器 (GCC) 标志?

Python setuptools 入口点和子应用程序作为子进程