繁体   English   中英

从目录导入python中的用户定义模块

[英]Importing user defined modules in python from a directory

我正在尝试导入我在python中编写的模块,该模块只打印出包含数字的列表。 我遇到的问题是我希望能够从一个单独的目录中导入它,但到目前为止我读过的答案似乎并不适用于我的情况。

例如,鉴于我想从我的文档文件夹中的目录导入printnumbers.py,我应该实现以下内容:

    import sys
    sys.path.append('/home/jake/Documents')
    import printnumbers.py

这段代码导致“导入错误”,告诉我指定的模块不存在。 我不确定从哪里开始,我已多次检查以确保它是路径和模块名称的正确拼写。 我仍然试图准确理解附加到“sys.path”的内容。 根据我的理解,它告诉程序在该目录中搜索模块?

感谢任何回答我的新手问题的人。 我只是想更好地理解python文档不能提供我的思维框架。

当文件是printnumbers.py ,该模块称为printnumbers (不带.py )。 因此使用

import printnumbers

import sys
sys.path.append('/home/jake/Documents')

'/home/jake/Documents'附加到sys.path的末尾。 每当import语句导致Python搜索模块时,将搜索sys.path中列出的目录(按所列顺序)。 (已经导入的模块缓存在sys.modules ,因此Python并不总是需要搜索sys.path目录来导入模块......)

因此,如果您有一个文件/home/jake/Documents/printnumbers.py ,那么import printnumbers会导致Python导入它,前提是在/home/jake/Documents/之前的sys.path列出的目录中没有其他名为printnumbers.py文件/home/jake/Documents/

请注意,将目录注入sys.path并不是设置Python来搜索模块的常用方法。 通常最好将/home/jake/Documents到PYTHONPATH环境变量中。 sys.path将自动包含PYTHONPATH环境变量中列出的目录。

还有一件事,在你的目录中使用一个空的__ init __.py文件使它成为一个python包(只有这样Python才会知道这个目录是一个普通目录以外的Python包目录)。 因此,您可以从不同目录导入该包中的模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM