【问题标题】:Django: determine actually used pip packagesDjango:确定实际使用的 pip 包
【发布时间】:2015-01-27 12:12:39
【问题描述】:

我有一个没有 virtualenv 的 Django 项目。现在迁移到 virtualenv 和我之前创建的 requirements.txt 是巨大的,无法安装在 virtualenv 中(许多错误如下所示)。如何生成所需软件包的最小列表?或者有什么地方可以参考吗?

Could not find any downloads that satisfy the requirement PIL==1.1.7 (from -r requirements.txt (line 8))
Some externally hosted files were ignored (use --allow-external PIL to allow).
Cleaning up...
No distributions at all found for PIL==1.1.7 (from -r requirements.txt (line 8))

不仅仅是 PIL 会引发错误,如果我评论它,另一个包会显示,我不知道我的应用程序真正使用了什么。

提前致谢!

【问题讨论】:

    标签: django package pip virtualenv


    【解决方案1】:

    你可以运行pip freeze(与virtualenv之前使用的系统python有关),这会给你安装包的列表;

    然后使用以下过滤该列表:

    1) 设置中的INSTALLED_APPS

    2) 还检查所有fromimport 语句(通过项目搜索)

    【讨论】:

    • 谢谢!我担心会有一些更不可预测的依赖关系,但是尽管我的项目使用了 Solr、Haystack、memcached 等一些东西,但它的效果非常好。
    【解决方案2】:

    我遇到了同样的问题,使用 PIP 安装 PIL 时存在问题,因为默认 Python 存储库中没有 PIL 1.7。

    最简单的解决方法是将这些选项添加到 pip:

    --allow-external PIL --allow-unverified PIL

    例如:

    pip install -r requirements.txt --allow-external PIL --allow-unverified PIL

    这个问题是一个潜在的安全问题,你不想在生产服务器上这样做! :)

    您的选择是使用 Pillow,它是 PIL 的一个分支:

    来自Pillow author 的评论,您应该验证它是否适用于您的代码。

    或者尝试 PIL 1.1.6,它是 Python 存储库:

    或者创建您自己的存储库并包含 PIL 1.1.7 源代码。

    或者,如果您在 Linux 系统上使用发行版的包管理工具安装 PIL,并从需求文件中删除 PIL,然后重建您的 virutalenv。

    你可以像这样在基于 Debian 的发行版上这样做:

    sudo apt-get install python-imaging

    这样的红帽发行版:

    sudo yum install python-imaging

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 2013-09-03
      相关资源
      最近更新 更多