【问题标题】:Can pip copy dependency source into my virtualenv?pip 可以将依赖源复制到我的 virtualenv 中吗?
【发布时间】:2014-04-01 11:13:26
【问题描述】:

我是 Python 和 Django 的血腥初学者。为了在我的 Windows 机器上设置环境,我执行了以下步骤。

  1. 安装 Python 3.4
  2. 使用 pip 安装 virtualenv
  3. 创建一个项目文件夹并在那里设置一个 virtualenv
  4. 从官网下载 Django 1.7b1 版本
  5. 在我的下载文件夹中提取存档
  6. 将它安装到我的 virtualenv 中

最后一步,我使用了我的 virtualenv 中的 pip。

[project]\scripts\pip.exe install -e [downloads]\Django-1.7b1

从全局 python 解释器我不能import django,正如预期的那样。当使用 virtualenv 中的 python 可执行文件时,它可以工作。但只有在我的下载文件夹中有 Django 源代码时,导入才会成功。相反,我想将它包含在我的 virtualenv 中。

我可以让 pip 自动将 Django 源代码复制到我的项目文件夹中吗?

【问题讨论】:

  • 为什么不用你的 virtualenv 中的 python 将 Django 安装到环境中
  • @misspec 我在我的 virtualenv 中使用 pip 来安装它,并从我的 virtualenv 中使用 python 来导入它。那应该是正确的,不是吗?
  • 是的,当你安装一个包时,它会被放入<virtualenv>/lib/python2.7/site-packages。此外,您无需下载软件包。很多时候你可以做pip install <package>==<version>
  • @LucianU 好的,很高兴知道。但是,这不适用于 beta 版本。在我的 Python 3.4 virtualenv 中,该文件夹只是 lib\site-packages。出于某种原因,它没有被放入该目录。
  • @danijar 我已经更新了我的答案,看看。您缺少目标目录。

标签: python django pip virtualenv django-1.7


【解决方案1】:

通过 pip inside 安装 django virtualenv。我正在运行 Linux,但您应该能够在 Windows 上运行命令。

如果您需要PyPi 中没有的版本,请下载该软件包并将其安装到 virtualenv site-packages 文件夹中。

projectsite-packages 文件夹位于 ~/venvs/project/lib/python2.7/site-packages 中。 在那里安装:

pip install downloads/Django-1.7b1.tar.gz -t ~/venvs/project/lib/python2.7/site-packages

Django 将安装到site-packages 文件夹,现在可以从 virtualenv 中导入。不再需要Downloads/Django-1.7b1

以下是我将 Django 1.7b1 从本地存档安装到我的 virtualenv 的 site-packages-文件夹的示例:

(project)msvalkon@Lunkwill:/tmp$ pip install /tmp/Django-1.7b1.tar.gz -t ~/venvs/project/lib/python2.7/site-packages/
Unpacking ./Django-1.7b1.tar.gz
  Running setup.py egg_info for package from file:///tmp/Django-1.7b1.tar.gz
    -- SNIP --
Successfully installed Django
Cleaning up...
(project)msvalkon@Lunkwill:/tmp$ python -c "import django;print django.get_version()"
1.7b1
(project)msvalkon@Lunkwill:/tmp$ deactivate
# I've got a really old version installed globally, but you can see
# that the installation worked.
msvalkon@Lunkwill:/tmp$ python -c "import django;print django.get_version()"
1.5.1

在此之后,在执行 pip freeze 而 virtualenv 已激活:

(project)msvalkon@Lunkwill:/tmp$ pip freeze
Django==1.7b1
argparse==1.2.1
wsgiref==0.1.2

【讨论】:

  • 我不能将pip install django 用于测试版,这就是问题所在。顺便说一句,我看了一下 virtualenvwrapper 但它不适用于 Windows。但是,这不应该是一个问题。
  • 您是否尝试过我在答案中的建议? pip install downloads/Django-1.7b1 -t ~/venvs/project/lib/python2.7/site-packages
  • 我先卸载了 Django,然后运行了这个命令。现在,我不能import django 既没有下载文件夹也没有下载文件夹。
  • 你已经激活了你的virtualenv? pip freeze 的输出是什么?
  • 不,我没有激活我的 virtualenv,因为我认为手动运行 scripts\pip.exescripts\python.exe 而不是从 PATH 使用它们会起作用。但是,在激活 virtualenv 之后,即使没有指定 -t 标志,我也可以成功安装 Django。现在pip freeze 也输出Django==1.7b1。非常感谢您的帮助。
猜你喜欢
  • 2011-11-27
  • 1970-01-01
  • 2021-10-31
  • 2017-06-07
  • 2011-01-23
  • 2012-03-25
  • 2011-11-18
  • 2014-10-31
  • 2021-02-27
相关资源
最近更新 更多