Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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 了解pip、virtualenv和软件包_Python_Pip_Virtualenv - Fatal编程技术网

Python 了解pip、virtualenv和软件包

Python 了解pip、virtualenv和软件包,python,pip,virtualenv,Python,Pip,Virtualenv,我对正在发生的事情有点困惑,但我可能只是误解了virtualenv的工作原理 首先,我发现我得到了错误,因为我的git文件夹的路径中有空格。从路径中删除空间后,我创建了一个新的virtualenv,然后当激活的pip列表开始正常工作时,显示安装到站点包目录中的内容。注意,我没有使用--no站点包创建venv,也没有使用pip freeze创建requirements.txt 这里是混乱开始的地方 在家里,我通过git pull进行同步,我看到了新的venv文件夹,但是: 激活venv和使用pip

我对正在发生的事情有点困惑,但我可能只是误解了virtualenv的工作原理

首先,我发现我得到了错误,因为我的git文件夹的路径中有空格。从路径中删除空间后,我创建了一个新的virtualenv,然后当激活的pip列表开始正常工作时,显示安装到站点包目录中的内容。注意,我没有使用--no站点包创建venv,也没有使用pip freeze创建requirements.txt

这里是混乱开始的地方

在家里,我通过git pull进行同步,我看到了新的venv文件夹,但是:

  • 激活venv和使用pip列表不会显示在工作时/在repo中安装的软件包
  • 例如,PyQt文件夹的大小不到工作时的一半。注:QT本身是在工作场所安装的,但不是在家中(显然是独立安装,而不是pip)。另一个例子是openpyxl。文件夹存在,但在pip列表中未提及
  • pip冻结是否存在,因为在单独的计算机上安装东西意味着您需要全局安装requirements.txt中列出的内容(如果我创建了一个)?我认为venv将包含所有内容,并且不需要安装软件包,因为它们已经在文件夹中

    我知道virtualenv文档中提到要忽略环境,但我不明白为什么。我听说在回购协议中使用它更容易。当然,除非这是一个拒绝,否则我的麻烦就来了

    我希望您能提供一些指导,让我了解如何最好地将pip、venv和git一起用于使用多台计算机(当然还有多人)。你可能会认为谷歌搜索可以解决这个问题,但到目前为止,这些细节我还没有弄清楚


    谢谢

    根据我的经验,跨多台计算机管理Python项目的最佳方法是不要尝试将pip包或virtualenv安装与您的程序一起分发,因为这可能会导致各种问题。事实上,我甚至不确定你想做的是可能的。相反,我建议如下:

  • 通过将
    env
    添加到
    .gitignore
    文件,将virtualenv安装从git repo中排除

  • 运行
    pip freeze>requirements.txt
    将所有必需的包写入
    requirements.txt

  • 在需要运行程序的任何其他计算机上,运行
    pip install-r requirements.txt
    以安装所需的软件包


  • 这种方法除了非常简单外,还可以让您(以及任何其他可能希望运行您的程序的人)灵活地设置本地Python环境。首先,我不是这方面的专家,但现在开始

    Git是版本控制的。您可以使用git拍摄文件的快照&文件的更改。与设置检查点一样,监视和跟踪版本控制的完成和更改也很重要

    Virtualenv仅仅是一个虚拟环境。与设置服务器一样,您正在设置Python的虚拟环境

    使用virtualenv,您可以设置使用哪一版本的python/pip。 pip是一个软件包管理系统。它帮助您提取所需的包及其所有依赖项。 如果库需要其他项,那么它也将被拉入。 这种类型的“库管理”有多种语言版本

    使用virtualenv,您可以指定要使用的内容;python2.7或3.5,或任何您需要的版本,只要它在正在使用的机器上

    激活virtualenv后,可以pip安装所需的库。当然,当您在该项目中激活virtualenv时,这些库是特定于此的

    requirement.txt文件只是一个拍摄“pip安装”ed的快照的地方。您可以将该文件传输到另一个项目,并在其他地方安装这些库。或者,您可以使用git将这些库放到repo中,但您可能会遇到问题

    就我个人而言,我认为没有虚拟人我无法工作。我的一个项目可能需要python2.7,另一个项目我看到需要python3.4,因此它允许您灵活使用它

    此外,在设置服务器(apache或nginx)时,您需要指向您的站点运行所需的virtualenv

    关于所有这些设置,我只是一个新手,但我喜欢python和django

    我希望我做到了这一点。 快乐编码

    有关更详细的配置和说明,请参阅以下文档

    [

    [

    [