将Python搜索路径扩展到其他来源
我刚刚加入了一个具有相当大的现有代码库的项目。我们用linux开发,不使用和IDE。我们通过命令行运行。我试图弄清楚如何在运行项目模块时让python搜索正确的路径。例如,当我运行类似的内容时:
python someprojectfile.py
我懂了
ImportError: no module named core.'somemodule'
我认为所有导入的内容都是这样,我认为这是路径问题。
TLDR:
如何~/codez/project/
在导入语句期间让Python搜索* .py文件以及所有文件和文件夹。
回答:
有几种方法可以做到这一点:
- 将环境变量设置
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 sysfrom os.path import dirname
sys.path.append(dirname(__file__))
以上是 将Python搜索路径扩展到其他来源 的全部内容, 来源链接: utcz.com/qa/399781.html