2017-02-04 51 views
0

我对发生的事情有点困惑,但我可能只是误解了virtualenv是如何工作的。了解pip,virtualenv和软件包

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

这里的混乱开始的地方......

在家里,我的git拉同步了,我看到新的VENV文件夹,但:

  1. 激活VENV和使用PIP列表不不显示在工作中安装的软件包/进入回购站的软件包。
  2. 例如,PyQt文件夹的大小不到工作时的一半。注意QT本身安装在工作中,但不在家中(显然,独立安装,不是pip)。另一个例子是openpyxl。文件夹在那里,但在pip列表中没有提及。

pip freeze是否存在是因为在独立的计算机上设置事物意味着您需要全局安装requirements.txt中列出的内容(如果我创建了一个)?我认为venv将包含所有内容,并且软件包不需要安装,因为它们已经在文件夹中。

我知道它在virtualenv文档中提到gitignore env,但我不明白为什么。我听说它更容易在回购中获得。当然,除非这是一个禁忌,否则我的麻烦。

我将不胜感激一些指导,了解如何使用多台计算机(当然还有多人)一起使用pip,venv和git。你会认为谷歌会解决它,但到目前为止,这些细节已经躲过了我。

感谢

回答

1

以我的经验来管理跨多台计算机Python项目的最好办法是,不要试图用你的程序一起分发PIP封装或安装的virtualenv,因为这可能会导致各种问题。事实上,我甚至不确定你想要做什么是可能的。相反,我会建议如下:

  1. 加入env.gitignore文件从您的git回购排除你的virtualenv安装。

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

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

这种做法,除了是相当简单的,也给你(和其他人谁可能要运行程序)的灵活性,以建立自己的本地Python环境然而他们想。

+0

感谢,是有道理的。 – JamesK

0

首先,我不是这方面的专家,但在这里。

Git是版本控制。你用git快速拍摄文件&文件的变化。就像设置一个检查点一样,监视&轨道的重要工作已完成&随版本控制器更改。

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

使用virtualenv,您可以设置使用哪个版本的python/pip。 pip是一个包管理系统。它可以帮助你拉动你需要的所有依赖包。 如果一个图书馆需要其他物品,那么它也会被拖拽。 这种类型的“图书馆管理”有很多种语言可供选择。

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

当你激活你的virtualenv后,你可以安装你需要的库。当然,当你在那个项目中激活这个virtualenv时,这些库是特定的。

requirements.txt文件只是一个地方拍摄你有什么“pip安装”编辑。您可以将该文件传输到其他项目,并将其他位置的库安装到其他位置或者,您可以使用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]