我正在尝试制作自己的包,以便可以使用不同文件夹中的文件。这个包包含几个不同的模块,然后是导入所有其他模块的主模块。例如:
文件夹
|- main.py
|- other.py
|- something.py
|- __init__.py
在 main.py 里面我有导入:
import other
import something
并且在运行文件本身时它工作得很好;但是,我添加了 __init__.py 文件并尝试将其导入到不同的文件夹中。包被识别,但 main.py 给了我以下错误:
<块引用>发生异常:ModuleNotFoundError No module named '单变量'
文件“C:...\stats.py”,第 8 行,在 导入单变量
文件“F:...\testing.py”,第 7 行,在 从统计导入统计
为了澄清起见,实际的主文件称为 stats.py。这是我第一次尝试制作一个包裹,所以我可能会遗漏一些东西。谢谢。
答案 0 :(得分:1)
您需要将导入更改为相对导入
import .other
import .something
或将其更改为以您的项目文件夹为根的绝对导入
import x.y.other
import x.y.something
您可以阅读 here 关于导入
答案 1 :(得分:1)
当您尝试导入一个模块时,您不需要“.py”部分。
拥有一个包含 init.py 文件(甚至是空白文件)的文件夹意味着包含该文件夹的项目可以从中导入。
/myproject
| - /mymodule
| - |- stats.py
| - |- other.py
| - |- something.py
| - |- __init__.py
| - main.py
然后在 main.py 中您需要做的就是 import mymodule
或 from mymodule import stats
我总是讨厌 FTFM 某人,但这里是如何从 official documentation 构建软件包的链接。但是,当您需要打包模块以便其他人可以运行它时,这才真正开始发挥作用时,Digital Ocean 有一个非常好的教程 here。