Python pdb&x27;中国的道路不同?
我有一个脚本,它使用以下代码获取python库的本地副本:Python pdb&x27;中国的道路不同?,python,python-2.7,pdb,Python,Python 2.7,Pdb,我有一个脚本,它使用以下代码获取python库的本地副本: # get our local copy of pybst import sys sys.path.insert(0, sys.path[0] + "/../libs/") from pybst import avltree 使用pythonscript.py运行时,一切运行正常。但是,当我运行pdb script.py并开始逐步执行时,我会得到一个ImportError: ImportError: 'No module name
# get our local copy of pybst
import sys
sys.path.insert(0, sys.path[0] + "/../libs/")
from pybst import avltree
使用pythonscript.py
运行时,一切运行正常。但是,当我运行pdb script.py
并开始逐步执行时,我会得到一个ImportError
:
ImportError: 'No module named pybst
如果我将sys路径行改为使用。/libs
(无第一斜杠),pdb
工作正常,但python
中断
为什么会发生这种情况?pdb
是否以与python
不同的方式修改sys.path
变量
编辑: 这里有一些有趣的东西,我在插入之前插入了一个
print sys.path
,下面是我发现的内容(使用pdb
):
在使用Python运行时:
before: sys.path[0] = /path/to/my/script
Python不会从
PATH
加载模块,但如果设置了PYTHONPATH
,它会使用它。您是否修改了PYTHONPATH?作为一种解决方法,尝试将其作为python-m pdb script.py运行
一个更好的解决方案可能是使用sys.path.append(os.path.join(os.getcwd(),'..,'libs'))
。确保导入操作系统。这行吗?为什么不在脚本开头导入pdb,然后手动添加pdb。在任意行设置_trace(),然后像往常一样启动脚本?@RushyPanchal您的解决方案非常有效,谢谢,但您是否了解为什么会发生这种情况?这个问题主要是出于好奇else@Jeeter我可以想象sys.path[0]
对于pdb
和python
来说是不一样的。虽然sys.path[0]
通常是工作目录,但更安全的做法是只获取当前工作目录(通过os.getcwd()
),然后添加到所需的路径上。对于路径操作,os.path
也更安全,因为无论系统如何,它都会生成有效的路径。Python不会从path
加载模块,但如果设置了PYTHONPATH
,它会使用它。您是否修改了PYTHONPATH?作为一种解决方法,尝试将其作为python-m pdb script.py运行
一个更好的解决方案可能是使用sys.path.append(os.path.join(os.getcwd(),'..,'libs'))
。确保导入操作系统。这行吗?为什么不在脚本开头导入pdb,然后手动添加pdb。在任意行设置_trace(),然后像往常一样启动脚本?@RushyPanchal您的解决方案非常有效,谢谢,但您是否了解为什么会发生这种情况?这个问题主要是出于好奇else@Jeeter我可以想象sys.path[0]
对于pdb
和python
来说是不一样的。虽然sys.path[0]
通常是工作目录,但更安全的做法是只获取当前工作目录(通过os.getcwd()
),然后添加到所需的路径上。对于路径操作,os.path
也更安全,因为无论系统如何,它都会生成有效的路径。
before: sys.path[0] = /path/to/my/script