有几种方法可以做到这一点:
将环境变量设置PYTHONPATH为用冒号分隔的目录列表,以搜索导入的模块。
在您的程序中,用于sys.path.append('/path/to/search')添加您希望Python搜索导入的模块的目录名称。sys.path仅仅是Python在每次被要求导入模块时搜索的目录列表,您可以根据需要进行更改(尽管我不建议删除任何标准目录!)。Python启动时,您放入环境变量中的所有目录PYTHONPATH都将插入sys.path其中。
用于site.addsitedir向添加目录sys.path。此和纯附加的区别在于,当您使用时addsitedir,它还会.pth在该目录中查找文件,并使用它们sys.path根据文件的内容向其中添加其他目录。有关更多详细信息,请参见文档。
您要使用哪一种取决于您的情况。请记住,当您将项目分发给其他用户时,他们通常以一种方式安装该项目,以便Python的导入程序会自动检测到Python代码文件(即,程序包通常安装在site-packages目录中),因此如果您sys.path在代码中遇到麻烦,当该代码在另一台计算机上运行时,可能是不必要的,甚至可能产生不利影响。对于开发而言,我敢猜测,设置PYTHONPATH通常是最好的选择。
但是,当您使用仅在自己的计算机上运行的内容时(或当您进行非标准设置(例如有时在Web应用程序框架中)时),执行诸如此类的操作并非完全不常见。
import sys
from os.path import dirname
sys.path.append(dirname(__file__))