Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部署时缺少Python包_Python_Linux_Deployment_Package - Fatal编程技术网

部署时缺少Python包

部署时缺少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

在我的开发(Win7)机器上,我的应用程序运行良好。文件夹结构如下所示(正在运行的脚本为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 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)