了解pip,virtualenv和包

时间:2017-02-04 20:43:20

标签: python pip virtualenv

我对正在发生的事情感到有些困惑,但我可能只是误解了virtualenv的工作方式。

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

这里出现混乱......

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

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

    我知道它在virtualenv docs中提到了gitignore env,但我不明白为什么。而且我已经听说它更容易在回购中使用它。除非当然这是禁忌,因此我的麻烦。

    我希望了解一些指导,了解pip,venv和git如何最好地一起使用多台计算机(当然还有多人)。你会认为谷歌搜索会解决它,但到目前为止,这些细节都没有找到我。

    由于

2 个答案:

答案 0 :(得分:1)

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

  1. env添加到.gitignore文件,从您的git仓库中排除virtualenv安装。

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

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

  4. 这种方法除了非常简单之外,还为您(以及可能想要运行您的程序的任何其他人)提供了他们想要的灵活性来设置他们的本地Python环境。

答案 1 :(得分:0)

首先,我不是设置这个的专家,但现在就去了。

Git是版本控制。你拍摄文件和快照用git更改文件。就像设置一个检查站一样,它对监控和监控非常重要。轨道已完成&随版本控制而改变。

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

使用virtualenv,您可以设置使用哪个版本的python / pip。 pip是一个包管理系统。它可以帮助您拉出所需的包装。所有的依赖。 如果某个库需要其他项目,那么它也会被拉出。 这种类型的图书馆管理'提供多种语言版本。

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

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

requirement.txt文件只是一个快照你所拥有的内容的地方" pip install" ed。您可以将该文件传输到另一个项目并将其他库安装在其他位置。或者,您可以使用git将这些库放在回购中,但是您可能会遇到问题。

就我个人而言,我认为没有virtualenv我就能工作。我的一个项目可能需要python2.7,另外我看到需要python3.4所以它允许你灵活使用它。

同样在设置服务器(apache或nginx)时,您需要指出您的网站需要运行的virtualenv。

与所有这些设置有关,我只是一个新手但爱蟒蛇& django的。

我希望我做到了这一正义。 快乐的编码

请参阅以下文档,了解更详细的配置&解释。

[https://virtualenv.pypa.io/en/stable/][1]

[https://github.com/pypa/pip][1]

[https://git-scm.com/book/en/v2/Getting-Started-Git-Basics][1]