【发布时间】:2020-08-10 20:52:56
【问题描述】:
如果我在本地机器上安装 virtualenv,激活它并尝试运行 python3,那么它可以正常工作(使用导入的模块)。但是,在我将它发送到实时服务器(使用 scp 和 filezilla)之后,它给出了错误:
-bash: /<path>/venv4/bin/python3: cannot execute binary file: Exec format error
python 和 python3.8 在同一个包中也会发生这种情况。
我尝试重新安装 virtualenv 和 pipx,重新创建 virtualenv 并重新上传几次。
似乎找不到模块,因为当我在实时服务器上激活 virtualenv 并输入“which python3”然后它显示系统 python3:
/usr/bin/python3
如果我尝试使用完整路径直接执行venv的python3,它也不起作用。
我这样做的原因是因为我使用的旧 virtualenv 已经停止工作,因为它似乎无法再找到已安装的模块。我不知道为什么。
任何帮助将不胜感激。
【问题讨论】:
-
这只能在服务器和您的桌面是具有相同库版本的相同操作系统时才有效。
Exec format error表示它是为不同的操作系统或架构编译的。 -
两者都是 64 位...还有什么我应该检查的吗?
-
它们都是 64 位的相同 OS 和相同版本的 python、glibc 等吗?
-
那就不是同一个操作系统和架构了。
-
一般来说,不要试图复制virtualenvs。在开发中使用它们来隔离您的环境并在
requirements.txt(对于pip)、Pipfile和Pipfile.lock(对于pipenv)或pyproject.toml和poetry.lock(对于poetry)中定义您的依赖项)。使用这些文件在生产环境中构建类似的环境。
标签: python python-3.x virtualenv