Python virtualenv激活有效,但解释器不起作用

时间:2018-07-25 16:09:13

标签: python virtualenv

我刚刚为我的项目设置了一个新环境,并上传了一个Python存储库,其中包括binlib和项目文件夹。我敢肯定,我之前也做过同样的事情,并且没有问题。现在,在AWS环境中执行相同操作时,出现错误 -bash: /projects/scrapy/bin/python2.7: cannot execute binary file。但是,当执行source /projects/scrapy/bin/activate时,它会成功激活环境。

据我了解,无论环境如何,python都应该能够执行而不会出现任何问题?

任何帮助或指出正确的方向将不胜感激!

1 个答案:

答案 0 :(得分:2)

  

无论环境如何,python都应该能够执行而不会出现任何问题?

否,Python二进制文件与您的特定操作系统和计算机体系结构相关。 Python 源代码通常可以在不同的机器上运行(前提是您未使用操作系统特定的功能),但这只有通过为特定的目标环境 first <编译Python解释器才能实现。 / em>。

换句话说,编译为可在macOS上运行的Python二进制文件在Linux上将无法运行。

source bin/activate所做的全部工作就是将您的终端设置配置为使用bin目录作为PATH搜索路径上的第一个目录。这并不能使bin/python在另一个环境中工作,仅意味着这两个环境都有一个可以运行该脚本的有效外壳解释程序。

使用为Linux编译的Python二进制文件创建一个新的virtualenv,并在其中安装相同的软件包。使用Pipenva requirements.txt file将依赖关系从Mac转移到Linux。

例如,使用Pipenv将PipfilePipfile.lock文件复制到另一台计算机,然后在该目录中运行pipenv install并重新创建virtualenv和依赖项从这些文件中。

我建议您在The Hitchhiker’s Guide to Python中阅读有关Python开发的最佳做法;其中包括有关如何为项目管理环境的主题。