Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.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/9/git/24.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 将虚拟环境项目从本地重新定位到服务器(flask项目),是否必须再次安装依赖项?_Python_Git_Flask_Pip_Virtualenv - Fatal编程技术网

Python 将虚拟环境项目从本地重新定位到服务器(flask项目),是否必须再次安装依赖项?

Python 将虚拟环境项目从本地重新定位到服务器(flask项目),是否必须再次安装依赖项?,python,git,flask,pip,virtualenv,Python,Git,Flask,Pip,Virtualenv,我已经在本地机器上的虚拟环境中创建了一个flask应用程序,我可以在本地运行它(http://localhost:5000) 然后我把这个项目放在一个repo中,然后我去了我的服务器,git克隆了这个项目 本地计算机和服务器上的所有文件都相同 然后,我想通过尝试.venv/bin/active 但是我遇到了一个错误,它说我没有烧瓶!: Traceback (most recent call last): File "__init__.py", line 1, in <module>

我已经在本地机器上的虚拟环境中创建了一个flask应用程序,我可以在本地运行它
(http://localhost:5000)

然后我把这个项目放在一个repo中,然后我去了我的服务器,git克隆了这个项目

本地计算机和服务器上的所有文件都相同

然后,我想通过尝试
.venv/bin/active

但是我遇到了一个错误,它说我没有烧瓶!:

Traceback (most recent call last):
  File "__init__.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask
回溯(最近一次呼叫最后一次):
文件“\uuuu init\uuuuu.py”,第1行,在
从烧瓶进口烧瓶
ImportError:没有名为flask的模块
我假设我必须首先在虚拟环境中初始化一些东西像安装所有依赖项一样,还是必须再次
pip安装flask
(那样做会有点滑稽…)


谢谢。

一般来说,python环境不能跨机器移植

这意味着您无法可靠地期望跨多台计算机移植虚拟环境。如果要在不同的操作系统之间移动内容,这一点尤其正确。例如,在Windows中创建的虚拟环境在Linux中不起作用

类似地,在OSX中创建的虚拟环境在Linux中也无法工作。有时,您可以获得Linux>Linux兼容性,但这是偶然的,不可依赖

原因有很多——一些库需要根据本机扩展构建,其他库需要兼容的系统库才能工作,等等

因此,最可靠的工作流如下所示:

  • 您可以(但我不建议这样做)将虚拟环境与项目放在同一目录中。如果这样做,请确保不要将虚拟环境根目录添加到源代码管理系统中。最好将您的虚拟环境与源代码分开(请参阅项目以了解单独管理虚拟环境的好方法)

  • 您应该通过运行
    pip freeze>requirements.txt
    创建一个需求文件。保持此文件的更新,并将其添加到源代码管理系统中。在您的目标系统中,只需创建一个空的虚拟环境,然后
    pip install-r requirements.txt
    ,以确保所有需求都正确安装。这样做将确保还构建和安装了任何本机扩展

  • 一些可能的问题:

    • 当您创建原始虚拟环境时,您是否指定了--没有站点包(如果不是),则您的包可能正在使用系统中的元素
    • 有些软件包依赖于目标系统上可能缺少的系统安装库
    • 您的服务器是否运行在与具有相同操作系统的开发系统类似的硬件集上?如果不是,您的virtualenv在不重新安装软件包的情况下可能无法工作,因为任何C/C++扩展都是为错误的硬件/OS构建的,并且无法工作
    问题是virtualenv不是一个包生成器(请看pyinstaller),而是一个开发和测试环境,当您将代码分发到一个新平台时,如果您一开始就没有站点软件包,那么您可以轻松找到需要哪些软件包来找到需要在新目标上安装什么


    所以基本上-您,或者更可能是系统管理员,确实需要
    运行pip install flask
    以及其他一些事情

    您是否执行了
    .venv/bin/active
    .venv/bin/activate
    ?我键入了activate,将编辑我的帖子!另外,如果我输入active,错误消息无论如何都会不同。谢谢你的回复,我选择了2号