【问题标题】:Python package missing when deploying部署时缺少 Python 包
【发布时间】:2013-09-05 23:47:26
【问题描述】:

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

我认识到问题是缺少第二行。但它为什么不见了?我错过了什么?我是不是建错了文件夹结构?

【问题讨论】:

  • import app; print app.__file__ 告诉你什么是被导入的?
  • 我认为PROJ_NAME 文件夹是这两个文件夹中唯一应该位于任一计算机路径上的文件夹。
  • @user2357112 这对我来说确实有意义,但问题是为什么它首先存在?

标签: python linux deployment package


【解决方案1】:

这是一个糟糕的解决方案,我不喜欢它,但它确实有效。 我将此添加到 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2020-09-12
    • 1970-01-01
    • 2020-10-20
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多