【问题标题】:Why am I getting DistributionNotFound error when I try to run Pyramid project?为什么我在尝试运行 Pyramid 项目时收到 DistributionNotFound 错误?
【发布时间】:2012-12-01 11:23:35
【问题描述】:

我安装在新的 Windows 8 (x64) 中:

  • python-2.7
  • pywin32-218.win32-py2.7
  • setuptools-0.6c11.win32-py2.7
  • 和金字塔(通过 easy_install)

我试图运行我的金字塔项目:

pserve I:\Projects\PyramidProject\development.ini

并提出了 pkg_resources.DistributionNotFound(req):

 I:\Projects\MyProject>pserve development.ini Traceback (most recent
 call last):   File "C:\Python27\Scripts\pserve-script.py", line 9, in
 <module>
     load_entry_point('pyramid==1.4b1', 'console_scripts', 'pserve')()   File
 "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 50, in main
     return command.run()   File "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 301, in run
     relative_to=base, global_conf=vars)   File "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 332, in loadserver
     server_spec, name=name, relative_to=relative_to, **kw)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 255, in loadserver
     return loadobj(SERVER, uri, name=name, **kw)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 271, in loadobj
     global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 296, in loadcontext
     global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 320, in _loadconfig
     return loader.get_context(object_type, name, global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 454, in get_context
     section)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 476, in _context_from_use
     object_type, name=use, global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 406, in get_context
     global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 296, in loadcontext
     global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 328, in _loadegg
     return loader.get_context(object_type, name, global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 620, in get_context
     object_type, name=name)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 640, in find_egg_entry_point
     pkg_resources.require(self.spec)   File "C:\Python27\lib\site-packages\distribute-0.6.32-py2.7.egg\pkg_resources.
 py", line 690, in require
     needed = self.resolve(parse_requirements(requirements))   File "C:\Python27\lib\site-packages\distribute-0.6.32-py2.7.egg\pkg_resources.
 py", line 588, in resolve
     raise DistributionNotFound(req) pkg_resources.DistributionNotFound: Paste

我的开发.ini:

[app:MyProject]
use = egg:MyProject
pyramid.reload_all = true
pyramid.reload_templates = true
pyramid.reload_assets = true
pyramid.debug_all = false
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.debug_templates = true
mako.directories = app:view
mako.module_directory = %(here)s/cache/templates/
#mako.cache_type = file
#mako.cache_enabled = False
#mako.cache_dir = %(here)s/cache/view/
#mako.cache_impl = beaker
#mako.cache_timeout = 60
mako.input_encoding = utf-8
mako.imports = from markupsafe import escape_silent
mako.default_filters = escape_silent
#mako.error_handler =
sqlalchemy.url = mysql://user:mypassword@mysql.mydomain.com/MyProject_dev?charset=utf8
sqlalchemy.pool_recycle = 3600
beaker.session.type = file
beaker.session.cookie_expires = True
beaker.session.cookie_domain = MyProject.pl
beaker.session.data_dir = %(here)s/data/sessions/data
beaker.session.lock_dir = %(here)s/data/sessions/lock
beaker.session.key = MyProject.pl
beaker.session.secret = 57b0d7ff4c665d87e3c3745c2abf519ca7d4082a
beaker.session.validate_key = 57b0d7ff
beaker.cache.enabled = True
beaker.cache.type = memory
beaker.cache.data_dir = %(here)s/cache/data
beaker.cache.lock_dir = %(here)s/cache/lock 
beaker.cache.regions = default_term, second_term, minute_term, hour_term, day_term, month_term, short_term, middle_term, long_term, 
beaker.cache.second_term.expire = 1
beaker.cache.minute_term.expire = 60
beaker.cache.hour_term.expire = 3600
beaker.cache.day_term.expire = 86400
beaker.cache.month_term.expire = 2678400
beaker.cache.default_term.expire = 60
beaker.cache.short_term.expire = 30
beaker.cache.middle_term.expire = 300
beaker.cache.long_term.expire = 86400
site.front.default_skin = MyProject
site.front.available_skins = default mobile MyProject
default_skin = MyProject
available_skins = default mobile MyProject

[filter:tm]
use = egg:repoze.tm2#tm
commit_veto = repoze.tm:default_commit_veto

[pipeline:main]
pipeline =
    egg:WebError#evalerror
    tm
    MyProject

[server:main]
use = egg:Paste#http
host = 127.0.0.1
port = 5000

# Begin logging configuration

[loggers]
keys = root, MyProject, sqlalchemy

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_MyProject]
level = DEBUG
handlers =
qualname = MyProject

[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither.  (Recommended for production systems.)

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

# End logging configuration

你知道我做错了什么吗?

【问题讨论】:

  • 请复制回溯的文本并复制到这里。
  • 看看你的 development.ini 也不错,试试“pip install paste”
  • Tom Willis:我尝试了“easy_install paste”(我不使用 pip),现在我得到的是“pkg_resources.DistributionNotFound: MyProject”而不是“pkg_resources.DistributionNotFound: Paste”...

标签: python pyramid


【解决方案1】:

您需要在您的 virtualenv 中运行 easy_install pastepython setup.py develop

附带说明,您使用的是非常旧的金字塔版本。我知道这是因为您的项目使用 weberror、repoze.tm2 和粘贴。如果您有时间,我建议您考虑升级到一些最佳做法。

【讨论】:

  • 很奇怪,因为我在该输出的某处看到了 Pyramid 1.4b1。
  • @Tshepang 我的意思是他正在使用旧的金字塔惯例,应该升级到更新的“最佳实践”。只要您安装 paste 和所需的其他依赖项,Pyramid 1.4 本身仍然与旧约定兼容。
  • @MichaelMerickel,您有描述这些新最佳实践的链接吗?我有同样的DistributionNotFound 错误。和@DavidSilva 一样,我已经安装了paste,并且得到了pkg_resources.DistributionNotFound: MyProject。我应该摒弃哪些“旧惯例”?
  • @Tanner 我在这里指的“旧约定”是过时的库。 weberror 和 paste 都未维护,并且 repoze.tm2 已替换为 pyramid_tm。 DistributionNotFound 几乎总是无法在正确的 virtualenv 中运行 python setup.py develop
  • 我刚到 2021 年时遇到了同样的错误,解决方案是运行 python setup.py develop,它仍在使用 pasteDeploy 2.1.1 - 我不确定旧约定是什么,但请详细说明!
猜你喜欢
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2022-11-03
  • 2022-06-13
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多