修复此ImportError错误的正确方法是什么?
我有以下目录结构:
/home/bodacydo
/home/bodacydo/work
/home/bodacydo/work/project
/home/bodacydo/work/project/programs
/home/bodacydo/work/project/foo
Run Code Online (Sandbox Code Playgroud)
我在目录中
/home/bodacydo/work/project
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入
python ./programs/my_python_program.py
Run Code Online (Sandbox Code Playgroud)
我立即得到了
ImportError: No module named foo.tasks
Run Code Online (Sandbox Code Playgroud)
该./programs/my_python_program.py包含以下行:
from foo.tasks import my_function
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么python不会找到./foo/tasks.py它 - 它就在那里.
如果我从Python shell中执行它,那么它可以工作:
python
>>> from foo.tasks import my_function
Run Code Online (Sandbox Code Playgroud)
如果我通过python ./programs/my_python_program.py脚本调用它,它只能起作用.
Ign*_*ams 106
Python不会添加当前目录sys.path,而是添加脚本所在的目录.添加/home/bodacydo/work/project到sys.path或$PYTHONPATH.
这是一个循序渐进的解决方案:
添加一个名为run.pyin 的脚本/home/bodacydo/work/project并像这样编辑:
Run Code Online (Sandbox Code Playgroud)import programs.my_python_program programs.my_python_program.main()
(替换main()为您的等效方法my_python_program.)
/home/bodacydo/work/projectrun.py说明:由于python将运行它的脚本的路径追加到PYTHONPATH ,因此run.py将追加运行/home/bodacydo/work/project.而且瞧,import foo.tasks会被发现.
将库添加到PYTHONPATH的示例解决方案.
将以下行添加到〜/ .bashrc中或直接运行:
export PYTHONPATH="$PYTHONPATH:$HOME/.python"
Run Code Online (Sandbox Code Playgroud)然后将您所需的库链接到〜/ .python文件夹,例如
ln -s /home/user/work/project/foo ~/.python/
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
397826 次 |
| 最近记录: |