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

Importing user defined modules in python from a directory

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

例如,如果我想从我的文档文件夹中的目录导入 printnumbers.py,我应该执行以下操作:

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

这段代码导致 "Import error" 告诉我指定的模块不存在。我不确定从哪里开始,我检查了多次以确保路径和模块名称的拼写正确。我仍在尝试准确理解附加到 "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 导入它,前提是在中列出的目录中没有其他名为 printnumbers.py 的文件sys.path 领先于 /home/jake/Documents/

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

and one more thing, use an empty __ init __.py file in you directory to make it as a python package (only then Python will know that this directory is a Python package directory other than an ordinary directory). Thus you can import modules from that package from different directory.