gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:12:36 26 4
gpt4 key购买 nike

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

python someprojectfile.py

我明白了

ImportError: no module named core.'somemodule'

我的所有导入都得到了这个,我认为这是路径的问题。

如何让 Python 在导入语句期间搜索 ~/codez/project/ 以及 *.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 sys
from os.path import dirname
sys.path.append(dirname(__file__))

关于python - 将 Python 搜索路径扩展到其他来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com