在我的开发(Win7)机器上,我的应用运行良好。文件夹结构如下所示(正在运行的脚本是run.py):
package1/
__init__.py
run.py
..
在应用程序内部,有一些模块可以执行
之类的操作 import app from package1
哪种方法正常。
然而,当我尝试部署到linux机器并运行完全相同的文件时,我收到错误:
ImportError: No module named package1
在运行此脚本时,我查看了两台计算机的sys.path。 Windows机器的前两行是:
C:\\Users\\USERNAME\\IdeaProjects\\PROJ_NAME\\package1
C:\\Users\\USERNAME\\IdeaProjects\\PROJ_NAME
而linux只有这个:
/home/username/webapps/PROJ_NAME/package1
我认识到问题是缺少第二行。但为什么它会丢失?我错过了什么?我是否构建了错误的文件夹结构?
答案 0 :(得分:0)
这是一个糟糕的解决方案,我不喜欢它,但它有效。 我把它添加到run.py
# Fixing the python path
import sys
import os
file_location = os.path.dirname(os.path.abspath(__file__))
project_dir = os.path.abspath(os.path.join(file_location, os.pardir))
if not project_dir in sys.path:
sys.path.insert(0, project_dir)