即使目录中有一个名为__init.py__的文件,Python也无法从子目录导入模块

 mobiledu2502911073 发布于 2023-02-10 13:02

我知道这个问题在这里已被多次询问了,我可能会阅读大部分答案(包括这个和那个)以及python文档,但仍然找不到我非常简单的导入问题的答案.这很简单,我必须错过一些愚蠢的东西,但我还没有看到它.我设置了以下结构:

myproject
    myscript.py
    MyPackage
        __init.py__
        mymodule.py

我只是想mymodule.pmyscript.py(或命令行python解释器,应该是相同的)加载y .

myscript.py 包含:

#!/usr/bin/python
import MyPackage

__init.py__ 包含:

from . import mymodule

mymodule.py 包含

#!/usr/bin/python

def myfunction():
    print "mymessage"

我的目标是打电话给myfunction,myscript.py但如果我试着打电话给我得到的模块

$python myscript.py 
Traceback (most recent call last):
   File "myscript.py", line 2, in 
   import MyPackage
ImportError: No module named MyPackage
我已经尝试过的:

我在OSX和Ubuntu Linux下尝试了一切,以减少python安装错误的可能性.

我将PYTHONPATH环境变量设置为myproject目录以及to .和to.

__init.py__留空了

我也尝试了从myproject目录中启动的python解释器的import语句

我尝试了以下import语句:

from MyPackage import mymodule
import MyPackage.mymodule
import MyPackage.mymodule as module

一切都没有成功(相同的错误信息).

如果我mymodule.py在不使用包的情况下放入项目目录,导入工作正常.但我不明白为什么从子包导入不起作用.知道我怎么能让它工作?

感谢帮助!

1 个回答
  • 在编辑帖子的格式时,我注意到你正在调用你的文件__init.py_.这导致python无法将您的MyPackage目录识别为包,因此ImportError: No module named MyPackage.

    它应该是__init__.py(名称__init__,扩展名.py).然后它将工作,您的项目结构和导入语句是正确的.

    但有一点:您还应该使用lower_underscore样式来命名包.包也是Python中的模块,它们应遵循相同的命名约定.有关建议的样式和命名约定的详细信息,请参阅PEP8.这只是一个惯例,它与您的问题无关.

    2023-02-10 13:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有