Rag*_*der 6 python module python-module
我正在尝试导入我在python中编写的模块,该模块只打印出包含数字的列表.我遇到的问题是我希望能够从一个单独的目录中导入它,但到目前为止我读过的答案似乎并不适用于我的情况.
例如,鉴于我想从我的文档文件夹中的目录导入printnumbers.py,我应该实现以下内容:
import sys
sys.path.append('/home/jake/Documents')
import printnumbers.py
Run Code Online (Sandbox Code Playgroud)
这段代码导致"导入错误",告诉我指定的模块不存在.我不确定从哪里开始,我已多次检查以确保它是路径和模块名称的正确拼写.我仍然试图准确理解附加到"sys.path"的内容.根据我的理解,它告诉程序在该目录中搜索模块?
感谢任何回答我的新手问题的人.我只是想更好地理解python文档不能提供我的思维框架.
当文件是printnumbers.py,模块被调用printnumbers(没有.py).因此使用
import printnumbers
Run Code Online (Sandbox Code Playgroud)
import sys
sys.path.append('/home/jake/Documents')
Run Code Online (Sandbox Code Playgroud)
追加'/home/jake/Documents'到尾声sys.path.sys.path每当import语句导致Python搜索模块时,将搜索列出的目录(按所列顺序).(已导入的模块已缓存sys.modules,因此Python并不总是需要搜索sys.path目录来导入模块...)
因此,如果您有一个文件/home/jake/Documents/printnumbers.py,那么import printnumbers将导致Python导入它,前提是printnumbers.py在sys.path前面列出的目录中没有其他文件/home/jake/Documents/.
请注意,将目录注入sys.path不是设置Python来搜索模块的常用方法.通常最好添加/home/jake/Documents到PYTHONPATH环境变量中.sys.path将自动包含PYTHONPATH环境变量中列出的目录.
小智 5
还有一件事,在你的目录中使用一个空的__ init __.py文件将它作为一个python包(只有这样python才会知道这个目录是一个不是普通目录的python包目录)。因此,您可以从不同目录的该包中导入模块。