[当我尝试$> python ./tools/test.py
时,出现导入错误,我无法导入要从其中调用python的目录中存在的模块。但是,我可以导入此模块,$> python -c "import mod"
有效。
我依赖./
在PYTHONPATH上(实际上)的事实。
当我在另一个目录中存在的脚本上运行解释器时,python对python路径做什么?有没有一种方法可以“锁定”当前的工作目录,以便导入工作?
我的设置:
./mod.py
:
x = 5 # just for demonstration purposes
./tools/test.py
:
from mod import x
# ... snip ... actual content
我正在从包含mod.py
和tools/
的目录中调用python:
$> python -c "from mod import x" # works fine
$> python tools/test.py
Traceback (most recent call last):
File "tools/test.py", line 1, in <module>
from mod import x
ModuleNotFoundError: No module named 'mod'
请注意,在我的PYTHONPATH中,包含mod.py
和tools
的当前目录为not。
我依赖
./
在PYTHONPATH上(实际上)的事实。
不是。它不在PYTHONPATH
上,也不在sys.path
上。通过文件路径运行脚本时,将是添加到sys.path
的脚本的目录。您可以查看每种指定要在sys.path
中运行的程序的方式添加到Python command line docs中的内容。