部署时缺少Python包

时间:2013-09-02 20:38:55

标签: python linux deployment package

在我的开发(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

我认识到问题是缺少第二行。但为什么它会丢失?我错过了什么?我是否构建了错误的文件夹结构?

1 个答案:

答案 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)
相关问题