Python 3.5安装pyvenv

时间:2016-06-15 04:03:33

标签: python debian python-3.5

我正在尝试为需要python 3.5的repo获取虚拟环境。我正在使用Debian,据我所知,python 3.5没有aptitude包。阅读一些帖子后,建议下载3.5源代码并进行编译。

运行make和install之后,python3.5被安装到/ usr / local / bin。我将其添加到$ PATH变量。

这是我遇到问题的地方。我跑完之后:

$ cd project-dir
$ pyvenv env
$ source env/bin/activate
$ pip install -r requirements.txt

我遇到了需要sudo安装正确软件包的问题。我跑了:

$ which pip

事实证明pip仍在使用pip的/ usr / local / bin版本。

$ echo $PATH

返回

/home/me/project-dir/env/bin:/usr/local/bin:/usr/bin:/bin: ...

我假设因为/ usr / local路径来自我的PATH变量中的虚拟环境路径,它使用的是pip版本而不是我的虚拟环境。

在virtualenv中运行正确版本的pip的最佳方法是什么?我能想到的两个选项是将二进制文件移到/ usr / bin或修改虚拟环境中的激活脚本,以便在/ usr / local之后放置virtualenv路径。

3 个答案:

答案 0 :(得分:2)

选项1 您可以通过执行

手动升级虚拟环境中的pip
pip install -U pip

选项2 升级该包内的pip的好方法 python -m ensurepip --upgrade确实升级了系统中的pip版本(如果它低于ensurepip中的版本)。

您正面临这个问题,因为venv使用ensurepip将pip添加到新环境中:

  

除非给出--without-pip选项,否则将调用ensurepip   bootstrap pip进入虚拟环境。

Ensurepip包不会从互联网上下载或从其他任何地方获取文件,因为所有必需的组件都已包含在包中。这样做会增加安全漏洞,因此不受支持。

Ensurepip并非旨在为您提供最新的点数,而仅仅是" a"点子。要获得最新版本,请在本文开头使用手动方式。

要检查ensurepip版本,您可以输入python console import ensurepip print(ensurepip.version())

更多有待进一步阅读的结果:

  1. 使用文件手动升级ensurepip - https://github.com/python/cpython/commit/f649e9c44631c07e707842c42747b651b986dcc4
  2. What's the proper way to install pip, virtualenv, and distribute for Python?
  3. Comprehensive beginner's virtualenv tutorial?

答案 1 :(得分:2)

凯什的回答让我朝着正确的方向前进。

问题是我实际上没有在我的venv中安装pip。

事实证明,当我从源代码构建python3.5时,我没有libssl-dev软件包。看起来像ensurepip的依赖之一是没有安装的python ssl包,因为我没有libssl-dev。

为了解决这个问题,我重新安装了python 3.5 for source并安装了libssl-dev软件包。重建的python现在包含了ssl包,它允许ensurepip在我的虚拟环境中安装pip。

答案 2 :(得分:1)

尝试在本地安装:

Dim HTMLForm As New StringBuilder
HTMLForm.Append("<html>")
HTMLForm.AppendLine("<body onload='document.forms[""" & "form1" & """].submit()'>")
HTMLForm.AppendLine("<form id='form1' method='POST'>" )

'Set value to collection
SetRequestField("amount", CDec(lblTtlPayAmt.Text))

'Generate HTML content using collection
For Each kvp As KeyValuePair(Of String, String) In RequestFields
    If Not String.IsNullOrEmpty(kvp.Value) Then
        HTMLForm.AppendLine("<input type='hidden' id='" & kvp.Key & "' name='" & kvp.Key & "' value='" & kvp.Value & "' />")
    End If
Next

HTMLForm.AppendLine("<input type = 'submit' value=PayNow' onclick = '" & window.open("~/Payment/Payment.aspx") & "'/>")
HTMLForm.AppendLine("</form>")
HTMLForm.AppendLine("</body>")
HTMLForm.AppendLine("</html>")

Response.Clear()
Response.Write(HTMLForm.ToString())

我认为,这会将文件安装在pip install --user -r requirements.txt 目录的子目录中(我认为你的虚拟环境会设置)。否则我认为你可以使用:

$HOME