Python无法导入自定义模块,即使有__init__.py
我有一个文件夹里面有一个 __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 个回答
3
确保你的文件结构是这样的:
./folder/__init__.py
./main.py
并且不要有一个叫做 folder.py
的文件!
切换到上一级文件夹,这样 ls folder/__init__.py
这个命令才能正常工作。
接下来,试着运行 python -c "import folder"
。
5
关于 PYTHONPATH 的问题。确保“文件夹名称”在你的路径中是可用的。如果你是在“文件夹名称”内部运行的,可能会找不到它。试着从“文件夹名称”的上级目录运行。
这里有一个 关于如何找到你的 PYTHONPATH 的问题。
7
从父级文件夹运行foldername
:
$ python -m foldername.main
如果你把main.py
改名为__main__.py
,那么你就可以这样运行它(自从Python 2.7开始):
$ python -m foldername
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路径里,那么你就可以在任何目录下运行上面的命令。