python在运行文件时不能导入模块,但是在交互式shell中可以导入模块

问题描述 投票:0回答:1

我遇到了一个奇怪的问题。

filegetter
是别人开发的模块,用
python setup.py install
安装。

这是一个测试文件。

#instance.py
import filegetter

当我跑步时

/home/ynx/miniconda3/bin/python /home/ynx/notebook/instance.py

它说:

Traceback (most recent call last):
  File "/home/ynx/notebook/instance.py", line 2, in <module>
    import filegetter
ModuleNotFoundError: No module named 'filegetter'

但是如果我运行交互式 shell:python

>>> import filegetter
>>>

有效。 我确定检查使用了相同的 python bin,我可以在文件模式下导入它,为什么以及如何导入它?

python
1个回答
0
投票

这看起来像是

sys.path
的问题。当你运行 Python shell 时,当前目录的路径被添加到
sys.path
,使这个目录中的模块
import
-able。要使一个模块可用于所有 Python 程序,请将其存储在用户站点目录中,您可以使用

找到该目录
$ python -m site --user-site

或者,在用户站点目录中放置一个名为

usercustomize.py
的脚本,它手动添加路径到
sys.path

import sys
sys.path.append('/path/to')

filegetter.py
的完整路径是
/path/to/filegetter.py

© www.soinside.com 2019 - 2024. All rights reserved.