我正在尝试安装我使用 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/