如何在不获取pkg_resources.DistributionNotFound的情况下为金字塔安装新包:一旦创建了项目

时间:2013-06-20 17:47:23

标签: python virtualenv pyramid setup.py

我已经安装了金字塔并成功创建了一个项目,但是当我尝试向setup.py要求添加新包时,他们总是给我一个pkg_resources.DistributionNotFound错误。

安装了软件包,只有在我运行后尝试安装新软件包时才会发生这种情况../bin/python3.3 setup.py develop它是什么软件包并不重要。

我解决(不是真的)的唯一方法是在创建项目并运行setup.py develop之前设置一个新的虚拟环境并安装软件包。

显然我做错了什么。除了pip安装包之外还有什么需要做的吗?这是一种路径问题吗?我是新手,所以非常感谢你的帮助!

* 添加我的安装过程,万一有人碰巧看到它有问题。还包括我的wsgi文件。

创造了一个虚拟现实 easy_install-3.3 env

激活了virtualenv source env/bin/activate

已安装的金字塔 cd env ./bin/easy_install-3.3 pyramid

创建了一个项目 ./bin/pcreate -s starter myprojectname

Ran setup.py cd myprojectname ../bin/python3.3 setup.py develop

此时我收到以下错误:pkg_resources.DistributionNotFound:waitress

已安装的女服务员 ../bin/easy_install-3.3 waitress

再次尝试setup.py(不确定我是否应该这样做) ../bin/python3.3 setup.py develop

仍然看到错误

我的.wsgi文件包含以下内容(不确定这是否对此问题很重要): activate_this = "/home/account/env/bin/activate_this.py" execfile(activate_this,dict(__file__=activate_this))

import os import sys

path = '/home/account/env/lib/python3.3/site-packages'

if path not in sys.path:     sys.path.append(path)

from pyramid.paster import get_app application = get_app('/home/account/env/myprojectname/production.ini', 'main')

2 个答案:

答案 0 :(得分:5)

使用Michael的上述建议,我能够解决他的问题。我甚至不需要手动安装任何包。一切正常后,如果我在setup.py文件中添加了一个需求(在创建金字塔项目时创建)并运行了pip install -e。一切都安装得很完美。这个问题是我安装东西的原因造成的。这是我的最后一个过程,以防任何其他新手金字塔:

  1. 创建了一个虚拟环境 virtualenv-3.3 env

  2. 激活环境 source env/bin/activate

  3. 已移至环境目录 cd env

  4. 已安装的金字塔 pip install pyramid

  5. 创建了一个项目 ./bin/pcreate -s starter myprojectname

  6. 已移至我的项目目录 cd megaproject

  7. Ran安装 pip install -e .

  8. 使用我的env和项目设置更新了我的wsgi文件

  9. 重新加载应用程序并高兴地看到可爱的金字塔首页

答案 1 :(得分:3)

pip和setup.py develop不应该混在一起。后者使用easy_install,在命名空间包的情况下与pip不兼容(这些是作为另一个父包的子包安装的包,例如zope.sqlalchemy只安装完整zope。*包的.sqlalchemy部分)。命名空间包导致pip和easy_install之间出现问题。另一方面,大多数其他软件包可以使用您选择的任何系统正常工作,但最好保持一致。

要仔细检查的另一件事是你实际上正在将软件包安装到virtualenv中。您应该能够在virtualenv中打开python cli并导入包。如果你不能,那么它可能没有安装。