部署时缺少Python包
在我的开发(Win7)机器上,我的应用程序运行良好。文件夹结构如下所示(正在运行的脚本为run.py,如下所示): 在应用程序内部,有一些模块可以做类似的事情部署时缺少Python包,python,linux,deployment,package,Python,Linux,Deployment,Package,在我的开发(Win7)机器上,我的应用程序运行良好。文件夹结构如下所示(正在运行的脚本为run.py,如下所示): 在应用程序内部,有一些模块可以做类似的事情 import app from package1 这很好用 但是,当我尝试部署到linux计算机并运行完全相同的文件时,我会遇到一个错误: ImportError: No module named package1 在运行此脚本时,我查看了两台机器的sys.path。windows计算机的前两行是: C:\\Users\\USE
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 one只有以下功能:
/home/username/webapps/PROJ_NAME/package1
我知道问题是第二行不见了。但为什么它不见了?我错过了什么?我是否构建了错误的文件夹结构?这是一个糟糕的解决方案,我不喜欢它,但它可以工作。 我将此添加到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)
什么是
导入应用程序;打印应用程序。\ uuuu文件\uuuuu
告诉您是导入的吗?我认为PROJ\u NAME
文件夹是这两个文件夹中唯一一个应该在任何一台机器上的路径上。@user2357112这对我来说是有意义的,但问题是为什么它首先在那里?
# 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)