问题描述
有几种方法可以做到这一点:
- 将环境变量设置
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文件以及所有文件和文件夹。