我很难理解模块导入在 Python 中是如何工作的(我之前从未用任何其他语言做过)。
假设我有:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
现在我试图得到这样的东西:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
但是,我肯定做错了什么,因为 Python 看不到 myapp
是一个模块:
ImportError: No module named myapp
原文由 user623990 发布,翻译遵循 CC BY-SA 4.0 许可协议
在您的特定情况下,您似乎正在尝试从 myapp.py 和 TestCase.py 脚本导入
SomeObject
。从 myapp.py,做因为它在同一个文件夹中。对于 TestCase.py,执行
_但是_,这仅在您从包中导入 TestCase 时才有效。如果您想直接运行
python TestCase.py
,则必须弄乱您的路径。这可以在 Python 中完成:尽管通常不建议这样做。
一般来说,如果你想让其他人使用你的 Python 包,你应该使用 distutils 创建一个安装脚本。这样,任何人都可以使用
python setup.py install
之类的命令轻松安装您的软件包,并且在他们的机器上随处可用。如果你对这个包很认真,你甚至可以将它添加到 Python 包索引 PyPI 中。