Python模块与包使用指南:如何在不同目录中导入py文件
在 python 中,一个 py 文件被称作模块。每个具有__init__.py 文件的目录被叫做包。只要模块或者包被正确导入,就可以在其他地方使用其中定义的函数、类等。

如果块或者包所在的目录在 sys.path 里,那么就能够使用 import 模块或者 import 包的方式来进行使用。
如果你要使用的模块(py 文件)与当前模块处于同一目录,那么只需导入相应的文件名即可。
如在a.py中使用b.py:
import b
但是如果想要import一个处于不同目录的文件,比如 b.py,那应该怎么做呢?
首先要把 b.py 所在的目录通过 sys.path.append 方法添加到搜索目录里。接着进行 import 操作,也就是……
可,例如
import sys
sys.path 被添加了 'c:\xxxx\b.py' 。这个例子是针对 windows 用户的。
在大多数情况下,上面的代码运行得很良好。然而,倘若你并未察觉到上面代码存在的任何问题,那么就应当……
请注意,上述代码有时会出现找不到模块或包的情况(ImportError: No module named)。
xxxxxx),这是因为:
sys 模块由 c 语言编写。它的字符串能够用 '\n'、'\r'、'\t' 等去表示特殊字符。所以……
上面代码最好写成:
将字符串 'c:\\xxx\\b.py' 添加到 sys.path 中。
可以使用 sys.path.append('c:/xxxx/b.py') 这种方式
这样能够避免由于错误地组成转义字符,进而导致无效的搜索目录(sys.path)的设置。
Python 的搜索模块的路径集是 sys.path,它是一个 list
可以在 Python 环境中使用 sys.path.append(path) 来添加相关路径,然而在退出 Python 环境之后
自己添加的路径就会自动消失了!
3、搜索路径和路径搜索
模块的导入需要叫做“路径搜索”的过程。
搜索路径:查找一组目录
路径搜索:查找某个文件的操作
导入错误:没有名为 myModule 的模块。
这种错误就是说:模块不在搜索路径里,从而导致路径搜索失败!
导入模块时,不带模块的后缀名,比如.py
Python搜索模块的路径:
1)、程序的主目录
2)、PTYHONPATH目录(如果已经进行了设置)
标准连接库目录通常位于 /usr/local/lib/python2.X/ 。
任何.pth 文件的内容(若存在)具有新功能,此功能能让用户将有效果的目录添加至模块搜索路径中。
.pth后缀的文本文件中一行一行的地列出目录。
这四个组建组合起来就变成了sys.path了,
>>> import sys >>> sys.path 导入时,Python会自动由左到右搜索这个列表中每个目录。
关于“python ImportError: No module named 'xxx'”这一问题呢?
解决方法如下:
使用 PYTHONPATH 环境变量,在该环境变量中输入相关路径,且不同路径之间用逗号分隔。
如果 PYTHONPATH 变量不存在,那么可以创建它。
这里的路径会被自动添加到 sys.path 里,它会一直存在于 sys.path 中,并且能够在不同的 Python 版本中使用。
中共享,应该是一样较为方便的方法。
C:\Users\Administrator\Desktop\test 目录下的 module1.py 文件:
def func1():
print("func1")
把 C:\Users\Administrator\Desktop\test 添加到 PYTHONPATH 里,这样就能够直接 import module1 了,接着
调用:module1.func1()即可。
把自己制作的 py 文件放置到 site_packages 目录当中。
使用 pth 文件,在 site-packages 文件里创建.pth 文件,接着把模块的路径写进去,且每行写一个路径。
个路径,以下是一个示例,pth文件也可以使用注释:
用于我的项目的.pth 文件,将其命名为 xxx.pth 文件。
C 盘下的 Users 文件夹中,Administrator 用户的桌面上有一个名为 test 的文件。
这是一个好的方法,不过存在管理方面的问题,同时也不能在不同的 Python 版本间进行共享。
在调用文件里添加“sys.path.append(模块文件目录)”这一操作;
直接将模块文件拷贝至$python_dir/Lib 目录当中。
借助以上 5 个方法就能直接进行 import module_name 操作。
参考文章: