尽管有__init__.py,但Python无法导入自定义模块

时间:2012-02-01 19:08:58

标签: python

我有一个__init__.py

的文件夹

文件__init __。py:

#!/usr/bin/python2
flags="test"

档案main.py:

#!/usr/bin/python2
import foldername

def main():
    print foldername.flags

if __name__ == '__main__':
main()

现在,当我运行./main.py(从文件夹中)时,我收到错误

ImportError: No module named foldername

4 个答案:

答案 0 :(得分:6)

foldername文件夹运行:

$ python -mfoldername.main

如果您将main.py重命名为__main__.py,则可以将其运行为(自Python 2.7起):

$ python -mfoldername

python -m将当前目录隐式添加到您的python路径(sys.path)。

Parent Folder/
└── foldername
    ├── __init__.py
    │   #    flags="test"
    └── __main__.py
        #    import foldername
        #   
        #    def main():
        #        print foldername.flags
        #   
        #    if __name__=="__main__":
        #        main()

如果foldername的父目录在您的python路径中,那么您可以从任何目录运行上述命令。

答案 1 :(得分:3)

PYTHONPATH问题。确保您的路径中有“foldername”。如果您从“foldername”内部运行它,它可能无法使用。尝试从“foldername”的父级运行。

这是a question about finding your PYTHONPATH

答案 2 :(得分:3)

确保您的布局如下:

./folder/__init__.py
./main.py

并且没有名为folder.py的文件

更改为文件夹,以便ls folder/__init__.py正常工作。

接下来尝试运行python -c "import folder"

答案 3 :(得分:0)

如果要在python3中导入模块,只需转到根文件夹

python3 -mModuleName

请确保不要删除模块名称前的-m,然后可以将其导入项目目录中的任何位置。