我有一个文件系统如下:
/
- website/
- - server.py
- common.py
在/
时,我尝试运行:python website/server.py
,但在尝试from common import my_func
时说明错误:
ImportError: No module named common
有没有办法将文件表示为模块?我遇到的问题是,在PyCharm中工作时,它正确理解python文件并按设计运行,但是当它在VM中的命令提示符下运行它时它不明白。我正在运行python,正如你所看到的那样,认为它会使用它作为范围,但它似乎不起作用。
我没有从调试器或日志中获得任何更多信息。我做错了什么?
编辑我按照Joao的要求尝试了以下操作。 python ./website/server.py
并仍然返回以下行,这与上面收到的错误相同。
Traceback (most recent call last):
File "./website/server.py", line 3, in <module>
from common import my_func
Import Error: No module named common
答案 0 :(得分:1)
您正尝试从父文件夹导入。
在from common import my_func
执行操作之前添加以下代码。
import sys
#appending parent directory into the path
sys.path.append('..')
答案 1 :(得分:0)
在PyCharm中,PYTHONPATH会自动设置。假设您从包含common.py的目录运行server.py,您可以将PYTHONPATH定义为该目录的运行。
$ python website/server.py
Traceback (most recent call last):
File "website/server.py", line 1, in <module>
from common import my_func
ImportError: No module named common
$ PYTHONPATH=`pwd` python website/server.py
$
这里的关键是确保您需要的软件包位于Python运行代码时将搜索的路径中。
答案 2 :(得分:-1)
尝试
python ./website/server.py