Heroku在git push时无法编译应用(Python 2.7.3),推送被拒 - 可能是collectstatic问题
我在Heroku上运行一个Python应用(版本2.7.3),但是在通过git推送代码时,部署失败了。
这是错误追踪信息:
Counting objects: 139, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (102/102), done.
Writing objects: 100% (102/102), 13.47 KiB, done.
Total 102 (delta 79), reused 0 (delta 0)
-----> Removing .DS_Store files
-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.3.
-----> Using Python runtime (python-2.7.3)
-----> Noticed pylibmc. Bootstrapping libmemcached.
-----> Installing dependencies using Pip (1.2.1)
Downloading/unpacking python-dateutil==1.5 (from -r requirements.txt (line 9))
Running setup.py egg_info for package python-dateutil
Installing collected packages: python-dateutil
Running setup.py install for python-dateutil
Successfully installed python-dateutil
Cleaning up...
-----> Running post-compile hook
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management /__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 70, in load_command_class
return module.Command()
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 57, in __init__
self.storage.path('')
File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 279, in _setup
self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
File "/app/whoy/utils/storage.py", line 87, in __init__
self.final_storage = PublicImmutableS3Storage(location=settings.STATICFILES_S3_PREFIX)
File "/app/whoy/utils/storage.py", line 28, in __init__
'Expires': http_date(time.time() + 60*60*24*365*15),
AttributeError: 'module' object has no attribute 'time'
! Heroku push rejected, failed to compile Python app
这是Heroku日志中相关的输出:
2013-02-12T15:18:45+00:00 heroku[slugc]: Slug compilation started
2013-02-12T15:18:54+00:00 heroku[slugc]: Slug compilation failed: failed to compile Python app
我觉得这可能跟python-dateutil这个库在Heroku上没有正确编译有关,而且collectstatic这个过程也失败了。这个问题是在我把这个库添加为依赖后才开始出现的。
其他在Stack Overflow上有类似输出的帖子似乎也遇到了同样的问题。它抱怨缺少time模块,这听起来有点奇怪,但可能这是个下游错误?
谢谢你们的任何建议!
1 个回答
0
看起来在 PYTHONPATH 中有另一个叫 time
的东西,它优先于标准库里的 time
模块。也就是说,那个其他 time
所在的文件夹在路径中排在了标准库之前。
最简单的解决办法就是把项目里特定的 time
改个名字。