为什么我的virtualenv python3在我的本地计算机上可以正常工作,但是当我将virtualenv上载到服务器时却不能正常工作?

问题描述

如果我在本地计算机上安装了virtualenv,请激活它并尝试运行python3,然后它可以正常工作(使用导入的模块)。但是,在将其发送到实时服务器(使用scp和filezilla)之后,它会显示错误:

-bash: /<path>/venv4/bin/python3: cannot execute binary file: Exec format error

在同一包中的python和python3.8也会发生这种情况。

我尝试重新安装virtualenv和pipx,重新创建virtualenv并重新上传几次。

似乎找不到该模块,因为当我在实时服务器上激活virtualenv并键入“哪个python3”时,它向我展示了系统python3:

/usr/bin/python3

如果我尝试使用完整路径直接执行venv的python3,它也不起作用。

之所以这样做,是因为我使用的旧版virtualenv已停止工作,因为它似乎无法再找到已安装的模块。我不确定为什么。

任何帮助将不胜感激。

解决方法

我相信某些pip软件包不仅包含python代码,还必须进行编译。如果您的主机操作系统与服务器操作系统不同,或者安装了不同的库,则主机编译的代码将与服务器不兼容。

常见做法是使用类似的东西创建带有所需软件包列表的文件

pip freeze > requirements.txt

并使用类似的方法在服务器上重建环境

pip install -r requirements.txt

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...