无法在Python中导入我自己的模块

n0pe:

我很难理解模块导入在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
大卫·罗宾逊(David Robinson):

在您的特定情况下,您似乎正在尝试SomeObject从myapp.py和TestCase.py脚本导入在myapp.py中,执行

import SomeObject

因为它在同一个文件夹中。对于TestCase.py,请执行

from ..myapp import SomeObject

但是,仅当您从软件包中导入TestCase时,这才有效。如果要直接运行python TestCase.py,则必须弄乱路径。这可以在Python中完成:

import sys
sys.path.append("..")
from myapp import SomeObject

尽管通常不建议这样做。

通常,如果您希望其他人使用您的Python软件包,则应使用distutils创建安装脚本。这样,任何人都可以使用像这样的命令轻松安装您的软件包,python setup.py install并且该软件包将在其计算机上的所有位置可用。如果您对软件包很认真,甚至可以将其添加到Python软件包索引PyPI中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章