pip可以将依赖源复制到我的虚拟环境中吗?

1 投票
1 回答
1079 浏览
提问于 2025-04-18 00:49

我刚开始学习Python和Django,真的是个菜鸟。为了在我的Windows电脑上设置环境,我做了以下几步。

  1. 安装Python 3.4
  2. 用pip安装virtualenv
  3. 创建一个项目文件夹,并在里面设置一个虚拟环境
  4. 从官网上下载Django 1.7b1版本
  5. 把下载的文件解压到我的下载文件夹里
  6. 把它安装到我的虚拟环境中

在最后一步,我是用虚拟环境里的pip来安装的。

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

从全局的Python解释器里,我无法import django,这也是预料之中的。当我使用虚拟环境里的Python执行时,它就能正常工作。但只有在我的下载文件夹里有Django的源代码时,导入才成功。其实我想把它放到我的虚拟环境里。

我能不能让pip自动把Django的源代码复制到我的项目文件夹里呢?

1 个回答

1

通过 pip 在虚拟环境中安装 django。我是在 Linux 系统上操作,但你在 Windows 上也可以运行这些命令。

如果你需要的版本在 PyPi 上找不到,可以下载这个包,然后把它安装到虚拟环境的 site-packages 文件夹里。

我项目的 site-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 文件夹里,现在你可以在虚拟环境中使用它了。Downloads/Django-1.7b1 这个文件就不需要了。

下面是一个例子,我从本地的压缩包安装 Django 1.7b1 到我的虚拟环境的 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,应该能看到以下输出:

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

撰写回答