将Python搜索路径扩展到其他来源

问题描述

有几种方法可以做到这一点:

  • 将环境变量设置PYTHONPATH@H_301_5@为用冒号分隔的目录列表,以搜索导入的模块。
  • 在您的程序中,用于sys.path.append('/path/to/search')@H_301_5@添加您希望Python搜索导入的模块的目录的名称sys.path只是Python在每次被要求导入模块时搜索的目录列表,您可以根据需要进行更改(尽管我不建议删除任何标准目录!)。Python启动时,您放入环境变量中的所有目录PYTHONPATH@H_301_5@都将插入sys.path@H_301_5@其中。
  • 用于site.addsitedir添加目录sys.path@H_301_5@。这种和普通追加的区别在于,当您使用时addsitedir@H_301_5@,它还会.pth@H_301_5@在该目录中查找文件,并使用它们sys.path@H_301_5@根据文件内容向其中添加其他目录。有关更多详细信息,请参见文档。

您要使用哪一种取决于您的情况。请记住,当您将项目分发给其他用户时,他们通常会以某种方式安装该项目,以便Python的导入程序会自动检测到Python代码文件(即,程序包通常安装在site- packages@H_301_5@目录中),因此,如果您sys.path@H_301_5@在代码中弄乱了,当该代码在另一台计算机上运行时,可能是不必要的,甚至可能产生不利影响。对于开发,我敢猜测,设置PYTHONPATH@H_301_5@通常是最好的选择。

但是,当您使用仅在自己的计算机上运行的内容时(或当您进行非标准设置时(例如有时在Web应用程序框架中)),执行类似的操作并非完全不常见。

import sys
from os.path import dirname
sys.path.append(dirname(__file__))
@H_301_5@

解决方法

我刚刚加入了一个具有相当大的现有代码库的项目。我们用linux开发,不使用和IDE。我们通过命令行运行。我试图弄清楚如何在运行项目模块时让python搜索正确的路径。例如,当我运行类似的内容时:

python someprojectfile.py

我懂了

ImportError: no module named core.'somemodule'

我认为所有导入的内容都是这样,我认为这是路径问题。

TLDR:

如何~/codez/project/在导入语句期间让Python搜索* .py文件以及所有文件和文件夹。

相关问答

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
JavaMail问题:无法将命令发送到SMTP主机